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 Backgrounds属性相关介绍
May 11 HTML / CSS
css3圆角边框和边框阴影示例
May 05 HTML / CSS
CSS3中Animation动画属性用法详解
Jul 04 HTML / CSS
html5应用缓存_动力节点Java学院整理
Jul 13 HTML / CSS
HTML5 微格式和相关的属性名称
Feb 10 HTML / CSS
简单html5代码获取地理位置
Mar 31 HTML / CSS
使用phonegap创建联系人的实现方法
Mar 30 HTML / CSS
用canvas画心电图的示例代码
Sep 10 HTML / CSS
Html5页面内使用JSON动画的实现
Jan 29 HTML / CSS
html5录音功能实战示例
Mar 25 HTML / CSS
Canvas高级路径操作之拖拽对象的实现
Aug 05 HTML / CSS
关于CSS自定义属性与前端页面的主题切换问题
Mar 21 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文件下载类
2006/12/06 PHP
默默简单的写了一个模板引擎
2007/01/02 PHP
php下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
javascript 传统事件模型构造的事件监听器实现代码
2010/05/31 Javascript
一段批量给页面上的控件赋值js
2010/06/19 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
js实现简单锁屏功能实例
2015/05/27 Javascript
JS组件系列之Bootstrap table表格组件神器【二、父子表和行列调序】
2016/05/10 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
AngularJS 获取ng-repeat动态生成的ng-model值实例详解
2016/11/29 Javascript
谈谈因Vue.js引发关于getter和setter的思考
2016/12/02 Javascript
Bootstrap Tree View简单而优雅的树结构组件实例解析
2017/06/15 Javascript
JavaScript数据类型和变量_动力节点Java学院整理
2017/06/26 Javascript
layui实现table加载的示例代码
2018/08/14 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
element中el-container容器与div布局区分详解
2020/05/13 Javascript
javascript实现评分功能
2020/06/24 Javascript
Python2 与Python3的版本区别实例分析
2020/03/30 Python
python和JavaScript哪个容易上手
2020/06/23 Python
通过代码实例解析Pytest运行流程
2020/08/20 Python
python3.7.3版本和django2.2.3版本是否可以兼容
2020/09/01 Python
python自动化测试三部曲之unittest框架的实现
2020/10/07 Python
详解pycharm自动import所需的库的操作方法
2020/11/30 Python
python中lower函数实现方法及用法讲解
2020/12/23 Python
介绍一下EJB的体系结构
2012/08/01 面试题
个人优缺点自我评价
2014/01/27 职场文书
仓库管理员岗位职责
2014/03/19 职场文书
某某同志考察材料
2014/05/28 职场文书
五一劳动节活动总结
2015/02/09 职场文书
2015年上半年物业工作总结
2015/03/30 职场文书
对学校的意见和建议
2015/06/04 职场文书
运动会200米广播稿
2015/08/19 职场文书
2016年大学迎新工作总结
2015/10/14 职场文书
攻击最高的10只幽灵系神奇宝贝,坚盾剑怪排第一,第五最为可怕
2022/03/18 日漫
python神经网络 使用Keras构建RNN训练
2022/05/04 Python
MySQL的表级锁,行级锁,排它锁和共享锁
2022/07/15 MySQL