关灯
开启左侧

[网页制作] html5 canvas绘制圆点虚线实例

[复制链接]
swmozowtfl 发表于 2015-7-9 23:13:11 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
 
html5 canvas 提供了很多图形绘制的函数,但是很可惜,canvas api只提供了画实线的函数(lineto),却并未提供画虚线的方法。这样的设计有时会带来很大的不便,《javascript权威指南》的作者david flanagan就认为这样的决定是有问题的,尤其是在标准的修改和实现都比较简单的情况下 (“…something that is so trivial to add to the specification and so trivial to implement… i really think you’re making a mistake here” —)。
在stack overflow上,phrogz提供了一个自己的画虚线的实现(),严格的说,这是一个点划线的实现(p.s. 我认为该页面上rod macdougall的简化版更好)。那么,如果需要画圆点虚线(如下图所示),应该怎么办呢?

                               
登录/注册后可看大图

以下是我自己的实现,只支持画水平的和垂直的圆点虚线,可以参考phrogz与rod macdougall的方法来添加斜线描画的功能。
代码如下:
var canvasprototype = window.canvasrenderingcontext2d && canvasrenderingcontext2d.prototype;
canvasprototype.dottedline = function(x1, y1, x2, y2, interval) {
if (!interval) {
interval = 5;
}
var ishorizontal=true;
if (x1==x2){
ishorizontal=false;
}
var len = ishorizontal ? x2-x1 : y2-y1;
this.moveto(x1, y1);
var progress=0;
while (len > progress) {
progress += interval;
if (progress > len) {
progress = len;
}
if (ishorizontal) {
this.moveto(x1+progress,y1);
this.arc(x1+progress,y1,1,0,2*math.pi,true);
this.fill();
} else {
this.moveto(x1,y1+progress);
this.arc(x1,y1+progress,1,0,2*math.pi,true);
this.fill();
}
}
}

更多网页制作信息请查看: 网页制作
 

精彩评论13

正序浏览
gevaemaidovef 发表于 2015-10-7 11:40:42 | 显示全部楼层
 
小手一抖,经验到手!手拿酱油,低头猛走!酱油党路过,杜绝零回复
 
tohme 发表于 2015-10-7 11:40:48 | 显示全部楼层
 
哈 你逗逗他啊
 
wwdu926a 发表于 2015-10-7 11:40:58 | 显示全部楼层
 
在这个处女都要验证码的时代不得不弄个会员来当每天看贴无数基本上不回 后来发现很傻,很多比我注册晚的级别都比我高,我终于觉悟于是我就把这段文字保存在记事本里,每看一贴就复制粘贴一次。
 
gevaemaidovef 发表于 2015-10-7 11:41:19 | 显示全部楼层
 
极品可以说是让你馨香满腹,三日不绝!!古人说的好:想要作文章,先要学做人。由作者的文章我们也可以揣测出作者定是成长在一个汗牛充栋,文化氛围浓厚而且精神面貌积 极向上的幸福家庭里面。在现在这个物欲横流,亲情冷淡的时代,能够在这样的家庭里
 
tohme 发表于 2015-10-7 11:41:24 | 显示全部楼层
 
刚才游戏去了 ~~嘿嘿~~
 
Mqokjdvq 发表于 2015-12-19 10:59:45 | 显示全部楼层
 
因删贴不及时所产生的任何法律(书法,基本法,劳动法,婚姻法,输入法,国际法,今日说法,与台湾关系法及文中涉及或可能涉及以及未及之法,各地治安管理条例)纠纷或责任本人概不负责。
 
tohme 发表于 2015-12-19 11:00:18 | 显示全部楼层
 
呵呵  我傻了‘~~哈哈
 
effoggikeftor 发表于 2015-12-19 11:00:25 | 显示全部楼层
 
哈哈 小心被她看见哦~~~~
 
mwxny 发表于 2015-12-19 11:00:35 | 显示全部楼层
 
感谢党和人民的关爱~~~
 
effoggikeftor 发表于 2017-4-11 16:19:59 | 显示全部楼层
 
不早了 明天见 各位晚安~~~~
 
seazvyt 发表于 2017-4-11 16:21:45 | 显示全部楼层
 
老大,我好崇拜你哟
 
bqtklouu 发表于 2017-4-11 16:24:06 | 显示全部楼层
 
我也不知道了~~你把我问蒙了 呵呵
 
buingeEvineus 发表于 2017-4-11 16:24:24 | 显示全部楼层
 
对自己好点~别难为自己
 
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


0关注

1粉丝

2503帖子

热门图文
热门帖子
排行榜
作者专栏

关注我们:微信订阅号

官方微信

APP下载

全国服务Q Q:

956130084

中国·湖北

Email:956130084@qq.com

Copyright   ©2015-2022  站长技术交流论坛|互联网技术交流平台Powered by©Discuz!技术支持:得知网络  

鄂公网安备 42018502006730号

  ( 鄂ICP备15006301号-5 )