得知互动

标题: html5 canvas绘制圆点虚线实例 [打印本页]

作者: swmozowtfl    时间: 2015-7-9 23:13
标题: html5 canvas绘制圆点虚线实例
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();
}
}
}

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




欢迎光临 得知互动 (https://bbs.dezhifl.com/) Powered by Discuz! X3.4