首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在html5画布上画一个椭圆?

如何在html5画布上画一个椭圆?
EN

Stack Overflow用户
提问于 2010-02-01 02:34:32
回答 16查看 96.9K关注 0票数 85

似乎没有本机函数来绘制一个椭圆形形状。此外,我不是在寻找鸡蛋的形状。

可以画一个带有两条贝塞尔曲线的椭圆吗?有人用过这个吗?

我的目的是画一些眼睛,实际上我只是使用圆弧。提前谢谢。

解决方案

因此scale()改变了所有下一个形状的缩放比例。Save()保存之前的设置,restore用于恢复设置以绘制不缩放的新形状。

感谢Jani

代码语言:javascript
复制
ctx.save();
ctx.scale(0.75, 1);
ctx.beginPath();
ctx.arc(20, 21, 10, 0, Math.PI*2, false);
ctx.stroke();
ctx.closePath();
ctx.restore();
EN

Stack Overflow用户

发布于 2011-12-16 20:39:34

我的解决方案与所有这些略有不同。虽然我认为最接近的答案是上面投票最多的答案,但我认为这种方式更清晰,更容易理解。

http://jsfiddle.net/jaredwilli/CZeEG/4/

代码语言:javascript
复制
    function bezierCurve(centerX, centerY, width, height) {
    con.beginPath();
    con.moveTo(centerX, centerY - height / 2);

    con.bezierCurveTo(
        centerX + width / 2, centerY - height / 2,
        centerX + width / 2, centerY + height / 2,
        centerX, centerY + height / 2
    );
    con.bezierCurveTo(
        centerX - width / 2, centerY + height / 2,
        centerX - width / 2, centerY - height / 2,
        centerX, centerY - height / 2
    );

    con.fillStyle = 'white';
    con.fill();
    con.closePath();
}

然后像这样使用它:

代码语言:javascript
复制
bezierCurve(x + 60, y + 75, 80, 130);

在小提琴中有几个使用示例,还有一个使用quadraticCurveTo的失败尝试。

票数 5
EN
查看全部 16 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2172798

复制
相关文章

相似问题

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