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中Color的一些特性介绍
May 27 HTML / CSS
简单掌握CSS3中resize属性的用法
Apr 01 HTML / CSS
CSS3中媒体查询结合rem布局适配手机屏幕
Jun 10 HTML / CSS
CSS Houdini实现动态波浪纹效果
Jul 30 HTML / CSS
html5文本内容_动力节点Java学院整理
Jul 11 HTML / CSS
Html5剪切板功能的实现代码
Jun 29 HTML / CSS
HTML5 WebGL 实现民航客机飞行监控系统
Jul 25 HTML / CSS
HTML5+CSS3实现拖放(Drag and Drop)示例
Jul 07 HTML / CSS
HTML5+css3:3D旋转木马效果相册
Jan 03 HTML / CSS
HTML5实现音频和视频嵌入的方法
Aug 22 HTML / CSS
小程序瀑布流解决左右两边高度差距过大的问题
Feb 20 HTML / CSS
使用CSS3实现按钮悬停闪烁动态特效代码
Aug 30 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 巧用数组降低程序的时间复杂度
2010/01/01 PHP
ThinkPHP视图查询详解
2014/06/30 PHP
JavaScript prototype属性使用说明
2010/05/13 Javascript
也说JavaScript中String类的replace函数
2011/09/22 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
div失去焦点事件实现思路
2014/04/22 Javascript
jquery.map()方法的使用详解
2015/07/09 Javascript
详解maxlength属性在textarea里奇怪的表现
2015/12/27 Javascript
jQuery Mobile 和 Kendo UI 的比较
2016/05/05 Javascript
ES6实现的遍历目录函数示例
2017/04/07 Javascript
详解vue过滤器在v2.0版本用法
2017/06/01 Javascript
Angular.JS中select下拉框设置value的方法
2017/06/20 Javascript
JavaScript之DOM插入更新删除_动力节点Java学院整理
2017/07/03 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
15个顶级开源JavaScript框架和库
2018/10/10 Javascript
vue项目打包上传github并制作预览链接(pages)
2019/04/19 Javascript
通过vue手动封装on、emit、off的代码详解
2019/05/29 Javascript
JS错误处理与调试操作实例分析
2020/04/13 Javascript
vue下载二进制流图片操作
2020/10/26 Javascript
微信小程序实现可长按移动控件
2020/11/01 Javascript
解决VantUI popup 弹窗不弹出或无蒙层的问题
2020/11/03 Javascript
[03:59]DOTA2英雄梦之声_第07期_水晶室女
2014/06/23 DOTA
[40:12]Liquid vs Chaos 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Laravel框架表单验证格式化输出的方法
2019/09/25 Python
HTML5 本地存储实现购物车功能
2017/09/07 HTML / CSS
King Apparel官网:英国街头服饰品牌
2019/09/05 全球购物
中专生职业生涯规划书范文
2013/12/29 职场文书
美国探亲签证邀请信
2014/02/05 职场文书
电大会计学自我鉴定
2014/02/06 职场文书
生产部厂长助理职位说明书
2014/03/03 职场文书
网络信息安全承诺书
2014/03/26 职场文书
2015年党员自评材料
2014/12/17 职场文书
承诺书怎么写 ?
2019/04/16 职场文书
导游词之昭君岛
2020/01/17 职场文书
抖音短视频(douyin)去水印工具的实现代码
2021/03/30 Javascript
Python 详解通过Scrapy框架实现爬取CSDN全站热榜标题热词流程
2021/11/11 Python