html5 canvas里绘制椭圆并保持线条粗细均匀的技巧


Posted in HTML / CSS onMarch 25, 2013

Canvas里绘制椭圆是一个很常见的需求,比较新的HTML Canvas 2D Context W3C草案里面新增了ellipse方法绘制椭圆,但是目前大多数浏览器还没有实现该方法,所以需要用arc或者arcTo方法结合scale变形来绘制椭圆。

示例代码:

复制代码
代码如下:

<canvas width="400" height="300"></canvas>
<script>
var ctx = documentquerySelector('canvas')getContext('2d');
ctxlineWidth = "10";
ctxscale(1,2);
ctxarc(150,150,100,0,MathPI*2,false);
ctxstroke();
</script>
html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
有点不对,因为线条粗细不均匀了,stroke也被scale影响了。

要修正这个问题,就要一点点小技巧了。

示例代码:

复制代码
代码如下:

[code]
<canvas width="400" height="300"></canvas>
<script>
var ctx = documentquerySelector('canvas')getContext('2d');
ctxlineWidth = "10";
ctxsave();
ctxscale(1,2);
ctxarc(150,150,100,0,MathPI*2,false);
ctxrestore();
ctxstroke();
</script>

[/code] html5 canvas里绘制椭圆并保持线条粗细均匀的技巧
现在均匀了,非常完美。

技巧就在先save保存画布状态,然后缩放、调用路径指令,再restore恢复画布状态,再stroke绘制出来。

关键点是先save后缩放,先restore后stroke.

HTML / CSS 相关文章推荐
一款css实现的鼠标经过按钮的特效
Sep 11 HTML / CSS
使用CSS3和Checkbox实现JQuery的一些效果
Aug 03 HTML / CSS
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
Dec 22 HTML / CSS
html5中如何将图片的绝对路径转换成文件对象
Jan 11 HTML / CSS
图片上传插件ImgUploadJS:用HTML5 File API 实现截图粘贴上传、拖拽上传
Jan 20 HTML / CSS
canvas 阴影和图形变换的示例代码
Jan 02 HTML / CSS
HTML5页面直接调用百度地图API获取当前位置直接导航目的地的实现代码
Mar 02 HTML / CSS
详解淘宝H5 sign加密算法
Aug 25 HTML / CSS
Html5新增了哪些功能
Apr 16 HTML / CSS
CSS几步实现赛博朋克2077风格视觉效果
Jun 16 HTML / CSS
从QQtabBar看css命名规范BEM的详细介绍
Aug 07 HTML / CSS
如何用H5实现好玩的2048小游戏
Jul 23 HTML / CSS
HTML5中的Article和Section元素认识及使用
Mar 22 #HTML / CSS
纯html5+css3下拉导航菜单实现代码
Mar 18 #HTML / CSS
html5配合css3实现带提示文字的输入框(摆脱js)
Mar 08 #HTML / CSS
html5的新增的标签和废除的标签简要概述
Feb 20 #HTML / CSS
html5新增的属性和废除的属性简要概述
Feb 20 #HTML / CSS
HTML5中微数据概述及在搜索引擎中的使用举例
Feb 07 #HTML / CSS
HTML中fieldset标签概述及使用方法
Feb 01 #HTML / CSS
You might like
php下载excel无法打开的解决方法
2013/12/24 PHP
php实现四舍五入的方法小结
2015/03/03 PHP
jquery实现文本框鼠标右击无效以及不能输入的代码
2010/11/05 Javascript
jQuery取id有.的值的方法
2014/05/21 Javascript
用原生js做个简单的滑动效果的回到顶部
2014/10/15 Javascript
JavaScript中判断整数的多种方法总结
2014/11/08 Javascript
jquery的总体架构分析及实现示例详解
2014/11/08 Javascript
jQuery实现图片向左向右切换效果的简单实例
2016/05/18 Javascript
jquery表格datatables实例解析 直接加载和延迟加载
2016/08/12 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
jQuery ajax动态生成table功能示例
2017/06/14 jQuery
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
通过图带你深入了解vue的响应式原理
2019/06/21 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
[42:32]VP vs RNG 2019国际邀请赛淘汰赛 败者组 BO3 第一场 8.21.mp4
2020/07/19 DOTA
python3.3使用tkinter开发猜数字游戏示例
2014/03/14 Python
Python 使用SMTP发送邮件的代码小结
2016/09/21 Python
详解python中requirements.txt的一切
2017/03/03 Python
Python切片工具pillow用法示例
2018/03/30 Python
解决pycharm无法调用pip安装的包问题
2018/05/18 Python
python3.6使用pymysql连接Mysql数据库
2018/05/25 Python
Python:type、object、class与内置类型实例
2019/12/25 Python
python中sys模块是做什么用的
2020/08/16 Python
canvas里面如何基于随机点绘制一个多边形的方法
2018/06/13 HTML / CSS
Nixon手表英国官网:美国尼克松手表品牌
2020/02/10 全球购物
总经理岗位职责
2013/11/09 职场文书
活动策划邀请函
2014/02/06 职场文书
超市创业计划书
2014/09/15 职场文书
个人查摆剖析材料
2014/10/04 职场文书
房屋产权共有协议书范本
2014/11/03 职场文书
社区服务活动报告
2015/02/05 职场文书
校本培训个人总结
2015/02/28 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
三八节活动简报
2015/07/20 职场文书
ipad隐藏软件app图标方法
2022/04/19 数码科技
Win10开机修复磁盘错误怎么跳过?Win10关闭开机磁盘检查的方法
2022/09/23 数码科技