利用三角函数在canvas上画虚线的方法


Posted in HTML / CSS onJanuary 11, 2018

因为canvas的api没有虚线的

所以需要自己实现

顺便复习一下三角函数岂不美滋滋

利用三角函数在canvas上画虚线的方法

 

var context=document.getElementById("canvas").getContext("2d");
function drawDashedLine(context,x1,y1,x2,y2,dashlength){
    dashlength=dashlength===undefined?5:dashlength;
    var deltaX=x2-x1; //一条直角边的长
    var deltay=y2-y1; //另一条指教边的长

    var numDashes=Math.floor(
        Math.sqrt(deltaX*deltaX+deltay*deltay)/dashlength  //Math.sqrt返回一个数的平方根  dashlength虚线每个点的长度
    )

    var everydashLength_x=deltaX/numDashes  //确定X轴每条虚线点的起始点
    var everydashLength_y=deltay/numDashes  //确定Y轴每条虚线点的起始点

    for(var i=0;i<numDashes;i++){
        context[i%2===0?'moveTo':"lineTo"]
        (x1+everydashLength_x*i,y1+everydashLength_y*i)
    }
    context.stroke()

}
context.lineWidth=3
context.strokeStyle="blue"
drawDashedLine(context,20,20,context.canvas.width-20,20,20)

效果如图

利用三角函数在canvas上画虚线的方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

HTML / CSS 相关文章推荐
css3中背景尺寸background-size详解
Sep 02 HTML / CSS
基于CSS3 animation动画属性实现轮播图效果
Sep 12 HTML / CSS
CSS3实现背景透明文字不透明的示例代码
Jun 25 HTML / CSS
利用CSS3动画实现圆圈由小变大向外扩散的效果实例
Sep 10 HTML / CSS
HTML5 video视频字幕的使用和制作方法
May 03 HTML / CSS
HTML5 Canvas渐进填充与透明实现图像的Mask效果
Jul 11 HTML / CSS
HTMl5的存储方式sessionStorage和localStorage详解
Mar 18 HTML / CSS
详解Html5 监听拦截Android返回键方法
Apr 18 HTML / CSS
HTML5去掉输入框type为number时的上下箭头的实现方法
Jan 03 HTML / CSS
app内嵌H5 webview 本地缓存问题的解决
Oct 19 HTML / CSS
在HTML中引入CSS的几种方式介绍
Dec 06 HTML / CSS
postman中form-data、x-www-form-urlencoded、raw、binary的区别介绍
Jan 18 HTML / CSS
HTML5 Web缓存和运用程序缓存(cookie,session)
Jan 11 #HTML / CSS
canvas进阶之贝塞尔公式推导与物体跟随复杂曲线的轨迹运动
Jan 10 #HTML / CSS
基于canvas使用贝塞尔曲线平滑拟合折线段的方法
Jan 10 #HTML / CSS
canvas实现高阶贝塞尔曲线(N阶贝塞尔曲线生成器)
Jan 10 #HTML / CSS
H5混合开发app如何升级的方法
Jan 10 #HTML / CSS
浅谈关于html5中图片抛物线运动的一些心得
Jan 09 #HTML / CSS
详解快速开发基于 HTML5 网络拓扑图应用
Jan 08 #HTML / CSS
You might like
PHP之COOKIE支持详解
2010/09/20 PHP
ThinkPHP的L方法使用简介
2014/06/18 PHP
PHP合并静态文件详解
2014/11/14 PHP
再推荐十款免费的php开发工具
2015/11/09 PHP
详解php中 === 的使用
2016/10/24 PHP
详解PHP中mb_strpos的使用
2018/02/04 PHP
laravel 解决强制跳转 https的问题
2019/10/22 PHP
JavaScript脚本语言在网页中的简单应用
2007/05/13 Javascript
js 父窗口控制子窗口的行为-打开,关闭,重定位,回复
2010/04/20 Javascript
jQuery对表单的操作代码集合
2011/04/06 Javascript
javascript各浏览器中option元素的表现差异
2011/04/07 Javascript
jQuery之end()和pushStack()使用介绍
2012/02/07 Javascript
从js向Action传中文参数出现乱码问题的解决方法
2013/12/29 Javascript
用js代码和插件实现wordpress雪花飘落效果的四种方法
2014/12/15 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
Bootstrap select实现下拉框多选效果
2016/12/23 Javascript
你应该了解的JavaScript Array.map()五种用途小结
2018/11/14 Javascript
vue使用pdfjs显示PDF可复制的实现方法
2018/12/14 Javascript
vue+elementUI实现表格关键字筛选高亮
2020/10/26 Javascript
web.py中调用文件夹内模板的方法
2014/08/26 Python
Django自定义manage命令实例代码
2018/02/11 Python
基于Python中numpy数组的合并实例讲解
2018/04/04 Python
如何分离django中的媒体、静态文件和网页
2019/11/12 Python
Pandas时间序列:重采样及频率转换方式
2019/12/26 Python
Python图片处理模块PIL操作方法(pillow)
2020/04/07 Python
详解python程序中的多任务
2020/09/16 Python
python字典按照value排序方法
2020/12/28 Python
ONLY德国官方在线商店:购买时尚女装
2017/09/21 全球购物
历史系自荐信范文
2013/12/24 职场文书
中文专业毕业生自荐书范文
2014/01/04 职场文书
校庆团日活动总结
2014/08/28 职场文书
绵山导游词
2015/02/05 职场文书
会计简历自我评价
2015/03/10 职场文书
2015年保洁工作总结范文
2015/04/28 职场文书
开业庆典嘉宾致辞
2015/08/01 职场文书
Python基础知识之变量的详解
2021/04/14 Python