利用三角函数在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仿造window7的开始菜单
Jun 17 HTML / CSS
详解CSS3中@media的实际使用
Aug 04 HTML / CSS
CSS3实现div从下往上滑入滑出效果示例
Apr 28 HTML / CSS
CSS3 实现穿梭星空动画
Nov 13 HTML / CSS
如何开发一款堪比APP的微信小程序(腾讯内部团队分享)
Dec 22 HTML / CSS
使用HTML5 Canvas绘制直线或折线等线条的方法讲解
Mar 14 HTML / CSS
HTML5 Geolocation API的正确使用方法
Dec 04 HTML / CSS
html5调用摄像头功能的实现代码
May 07 HTML / CSS
html5的画布canvas——画出简单的矩形、三角形实例代码
Jun 09 HTML / CSS
h5调用摄像头的实现方法
Jun 01 HTML / CSS
canvas学习和滤镜实现代码
Aug 22 HTML / CSS
关于canvas.toDataURL 在iOS运行失败的问题解决
Sep 16 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 中的面向对象编程:通向大型 PHP 工程的办法
2006/12/03 PHP
php 魔术函数使用说明
2010/02/21 PHP
PHP关于IE下的iframe跨域导致session丢失问题解决方法
2013/10/10 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
浅谈php中urlencode与rawurlencode的区别
2016/09/05 PHP
PHP实现的注册,登录及查询用户资料功能API接口示例
2017/06/06 PHP
PHP如何根据文件头检测文件类型实例代码
2018/10/14 PHP
javascript中关于执行环境的杂谈
2011/08/14 Javascript
IE6-IE9不支持table.innerHTML的解决方法分享
2012/09/14 Javascript
js通过地址栏给action传值(中文乱码全是问号)
2013/05/02 Javascript
jQuery实现带滚动线条导航效果的方法
2015/01/30 Javascript
Javascript验证方法大全
2015/09/21 Javascript
js实现的彩色方块飞舞奇幻效果
2016/01/27 Javascript
Bootstrap Table使用方法解析
2016/10/19 Javascript
Vue.js实现一个todo-list的上移下移删除功能
2017/06/26 Javascript
bootstrap fileinput实现文件上传功能
2017/08/23 Javascript
微信小程序上线发布流程图文详解
2019/05/06 Javascript
微信小程序 自定义弹窗实现过程(附代码)
2019/12/05 Javascript
JS图片懒加载技术实现过程解析
2020/07/27 Javascript
axios封装与传参示例详解
2020/10/18 Javascript
[01:38]DOTA2辉夜杯 欢乐的观众现场采访
2015/12/26 DOTA
对Python进行数据分析_关于Package的安装问题
2017/05/22 Python
python正则表达式面试题解答
2020/04/28 Python
python-docx修改已存在的Word文档的表格的字体格式方法
2018/05/08 Python
python: 判断tuple、list、dict是否为空的方法
2018/10/22 Python
python用opencv批量截取图像指定区域的方法
2019/01/24 Python
解决yum对python依赖版本问题
2019/07/05 Python
Python 创建守护进程的示例
2020/09/29 Python
Europcar澳大利亚官网:全球汽车租赁领域的领导者
2019/03/24 全球购物
LUISAVIAROMA德国官网:时尚奢侈品牌购物网站
2020/11/12 全球购物
Zatchels官网:英国剑桥包品牌
2021/01/12 全球购物
企业厂务公开实施方案
2014/03/26 职场文书
创先争优承诺书
2015/01/20 职场文书
北京导游词
2015/02/12 职场文书
后天观后感
2015/06/08 职场文书
MySQL索引失效的典型案例
2021/06/05 MySQL