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 clip-path 用法介绍详解
Mar 01 HTML / CSS
CSS3用@font-face实现自定义英文字体
Sep 23 HTML / CSS
简单总结CSS3中视窗单位Viewport的常见用法
Feb 04 HTML / CSS
纯css3制作煽动翅膀的蝴蝶的示例
Apr 23 HTML / CSS
CSS 3.0 结合video视频实现的创意开幕效果
Jun 01 HTML / CSS
HTML5实现一个能够移动的小坦克示例代码
Sep 02 HTML / CSS
html5 自定义播放器核心代码
Dec 20 HTML / CSS
HTML5拖拽API经典实例详解
Apr 20 HTML / CSS
AmazeUI 网格的实现示例
Aug 13 HTML / CSS
CSS 文字装饰 text-decoration & text-emphasis 详解
Apr 06 HTML / CSS
CSS控制继承中的height能变为可继承吗
Jun 10 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生成指定长度随机数最简洁的方法
2014/07/14 PHP
php单态设计模式(单例模式)实例
2014/11/18 PHP
QQ邮箱的一个文本编辑器代码
2007/03/14 Javascript
Javascript计算时间差的函数分享
2011/07/04 Javascript
jqplot通过ajax动态画折线图的方法及思路
2013/12/08 Javascript
jQuery之选项卡的简单实现
2014/02/28 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
JavaScript中eval()函数用法详解
2015/12/14 Javascript
js中获取时间new Date()的全面介绍
2016/06/20 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
Vue中使用vue-i18插件实现多语言切换功能
2018/04/25 Javascript
VUE 配置vue-devtools调试工具及安装方法
2018/09/30 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
react使用antd表单赋值,用于修改弹框的操作
2020/10/29 Javascript
手把手教你如何编译打包video.js
2020/12/09 Javascript
python的常见命令注入威胁
2013/02/18 Python
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
python实现微信远程控制电脑
2018/02/22 Python
Python3.6实现连接mysql或mariadb的方法分析
2018/05/18 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
Python Selenium 之关闭窗口close与quit的方法
2019/02/13 Python
详解Python学习之安装pandas
2019/04/16 Python
Python列表切片常用操作实例解析
2020/03/10 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
python 使用elasticsearch 实现翻页的三种方式
2020/07/31 Python
Pycharm操作Git及GitHub的步骤详解
2020/10/27 Python
html5 浏览器支持 如何让所有的浏览器都支持HTML5标签样式
2012/12/07 HTML / CSS
Crabtree & Evelyn英国官网:瑰珀翠护手霜、香水、沐浴和身体护理
2018/04/26 全球购物
《骆驼和羊》教学反思
2014/02/27 职场文书
高中教师先进事迹材料
2014/08/22 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
四风问题对照检查材料整改措施
2014/09/27 职场文书
岳庙导游词
2015/02/04 职场文书
自愿离婚协议书范本2016
2016/03/18 职场文书
Mysql实现简易版搜索引擎的示例代码
2021/08/30 MySQL