首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法在javascript中调用绘图函数

无法在javascript中调用绘图函数
EN

Stack Overflow用户
提问于 2013-04-12 18:15:19
回答 4查看 1.1K关注 0票数 1

我有一个创建布局的项目,我已经决定用canvas元素来做这件事。我创建了一个需要4个参数的函数。

代码语言:javascript
复制
   function fillArc(camvas,x,y,w,h)
{
canv.beginPath();
    var canv = document.getElementById("camvas");
    var context = canv.getContext('2d');
    context.strokeStyle="#FFFFFF";
    context.moveTo(x+5,y);
    context.lineTo(w-5,y);
    context.quadraticCurveTo(w,y,w,y+5);
    context.lineTo(w,h-5);
    context.quadraticCurveTo(w,h,w-5,h);
    context.lineTo(x+5,h);  
    context.quadraticCurveTo(x,h,x,h-5);
    context.lineTo(x,y+5);
    context.quadraticCurveTo(x,y,x+5,y);
    context.stroke();
canv.closePath();


}

我有几个画布元素,所以我想在不同的区域创建这个边界半径框。我假设这样的调用:

代码语言:javascript
复制
<canvas width="500" height="500" id="canvaslayouts">
</canvas>

<script>
fillArc(canvaslayouts,10,10,50,50);
</script>

但这似乎没有work.Can任何人指出我的错误,请。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-12 18:23:09

  • 将您的函数和对它的调用放在一个script元素中
  • 传递一个字符串,该字符串与您希望在
  • 上绘制的画布的id相匹配
  • 使用上下文而不是画布访问绘图
票数 0
EN

Stack Overflow用户

发布于 2013-04-12 18:16:30

将其放在<script>块中应该可以做到这一点:

代码语言:javascript
复制
<canvas width="500" height="500" id="canvaslayouts"></canvas>
<script>
fillArc(canvaslayouts,10,10,50,50);
</script>

还要注意,您的fillArc()函数定义(或您可能拥有的任何其他可执行JavaScript )也应该在<script>块中。

票数 0
EN

Stack Overflow用户

发布于 2013-04-12 18:18:00

您需要更改.beginPath().closePath()调用,以便将它们应用于上下文,而不是应用于画布。

当然,这只能在调用了canv.getContext()之后才能完成。

您还需要:

  1. 使用正确的ID -您使用了"camvas",而它应该是同名的变量
  2. 将JS放入<script> tags

即:

代码语言:javascript
复制
<script>
function fillArc(camvas,x,y,w,h)
{
    var canv = document.getElementById(camvas); 
    var context = canv.getContext('2d');
    context.beginPath();
    context.strokeStyle="#FFFFFF";
    context.moveTo(x+5,y);
    context.lineTo(w-5,y);
    context.quadraticCurveTo(w,y,w,y+5);
    context.lineTo(w,h-5);
    context.quadraticCurveTo(w,h,w-5,h);
    context.lineTo(x+5,h);  
    context.quadraticCurveTo(x,h,x,h-5);
    context.lineTo(x,y+5);
    context.quadraticCurveTo(x,y,x+5,y);
    context.closePath();  // NB: close the path before you stroke it
    context.stroke();
}
</script>

<canvas width="500" height="500" id="canvaslayouts"> </canvas>
<script>
    fillArc("canvaslayouts", 10, 10, 50, 50);
</script>    
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15968729

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档