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 相关文章推荐
css3实现一个div设置多张背景图片及background-image属性实例演示
Aug 10 HTML / CSS
一款纯css3实现的响应式导航
Oct 31 HTML / CSS
一款简洁的纯css3代码实现的动画导航
Oct 31 HTML / CSS
纯css3实现的鼠标悬停动画按钮
Dec 23 HTML / CSS
CSS3 函数技巧 用css 实现js实现的事情(clac Counters Tooltip)
Aug 15 HTML / CSS
HTML5实现分享到微信好友朋友圈QQ好友QQ空间微博二维码功能
Jan 03 HTML / CSS
HTML5如何为形状图上颜色怎么绘制具有颜色和透明度的矩形
Jun 23 HTML / CSS
html5使用Drag事件编辑器拖拽上传图片的示例代码
Aug 22 HTML / CSS
详解如何解决canvas图片getImageData,toDataURL跨域问题
Sep 17 HTML / CSS
CSS代码检查工具stylelint的使用方法详解
Mar 27 HTML / CSS
html+css实现分层金字塔的实例
Jun 02 HTML / CSS
CSS极坐标的实例代码
Jun 03 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
第1次亲密接触PHP5(2)
2006/10/09 PHP
PHP4(windows版本)中的COM函数
2006/10/09 PHP
php实现把数组按指定的个数分隔
2014/02/17 PHP
PHP调用JAVA的WebService简单实例
2014/03/11 PHP
探讨JQUERY JSON的反序列化类 using问题的解决方法
2013/12/19 Javascript
jquery对元素拖动排序示例
2014/01/16 Javascript
JS将所有对象s的属性复制给对象r(原生js+jquery)
2014/01/25 Javascript
Node.js和MongoDB实现简单日志分析系统
2015/04/25 Javascript
基于jQuery实现多层次的手风琴效果附源码
2015/09/21 Javascript
基于HTML+CSS,jQuery编写的简易计算器后续(添加了键盘监听)
2016/01/05 Javascript
浅谈js的url解析函数封装
2016/06/28 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
js实现简单的计算器功能
2017/01/16 Javascript
jQuery实现表格奇偶行显示不同背景色 就这么简单
2017/03/13 Javascript
微信小程序-滚动消息通知的实例代码
2017/08/03 Javascript
nodejs基于mssql模块连接sqlserver数据库的简单封装操作示例
2018/01/05 NodeJs
js input输入百分号保存数据库失败的解决方法
2018/05/26 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
2019/02/28 Javascript
nodejs简单抓包工具使用详解
2019/08/23 NodeJs
js实现点赞效果
2020/03/16 Javascript
Python中关于Sequence切片的下标问题详解
2017/06/15 Python
python实现俄罗斯方块
2018/06/26 Python
Python线程指南分享
2019/11/19 Python
使用Python进行防病毒免杀解析
2019/12/13 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
2020/10/15 Python
HTML5 input元素类型:email及url介绍
2013/08/13 HTML / CSS
HTML5 canvas实现移动端上传头像拖拽裁剪效果
2016/03/14 HTML / CSS
TUMI澳大利亚网站:美国旅行箱包品牌
2017/03/27 全球购物
应届医学毕业生求职信分享
2013/12/02 职场文书
2014年大学庆元旦迎新年活动方案
2014/03/09 职场文书
优秀公益广告词大全
2014/03/19 职场文书
小班教师个人总结
2015/02/05 职场文书
2015年网络管理员工作总结
2015/05/21 职场文书
2015年小学教师培训工作总结
2015/07/21 职场文书
思品教学工作总结
2015/08/10 职场文书
FFmpeg视频处理入门教程(新手必看)
2022/01/22 杂记