利用三角函数在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中的box-flex弹性盒属性布局
Jun 09 HTML / CSS
CSS3 Flex 弹性布局实例代码详解
Nov 01 HTML / CSS
用HTML5制作烟火效果的教程
May 12 HTML / CSS
很酷的HTML5电子书翻页动画特效
Feb 25 HTML / CSS
HTML5 canvas实现移动端上传头像拖拽裁剪效果
Mar 14 HTML / CSS
移动端HTML5实现文件上传功能【附代码】
Mar 25 HTML / CSS
浅析HTML5中header标签的用法
Jun 24 HTML / CSS
html5使用canvas实现弹幕功能示例
Sep 11 HTML / CSS
如何在Canvas中添加事件的方法示例
May 21 HTML / CSS
HTML5中外部浏览器唤起微信分享
Jan 02 HTML / CSS
CSS 圆形进度栏
Apr 06 HTML / CSS
css布局巧妙技巧之css三角示例的运用
Mar 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
自制短波长线天线频率预选器 - 成功消除B2K之流的镜像
2021/03/02 无线电
thinkphp常见路径用法分析
2014/12/02 PHP
PHP静态成员变量和非静态成员变量详解
2017/02/14 PHP
图片延迟加载的实现代码(模仿懒惰)
2013/03/29 Javascript
js判断手机和pc端选择不同执行事件的方法
2015/01/30 Javascript
JavaScript编写点击查看大图的页面半透明遮罩层效果实例
2016/05/09 Javascript
jQuery购物车插件jsorder用法(支持后台处理程序直接转换成DataTable处理)
2016/06/08 Javascript
JS异步文件分片断点上传的实现思路
2016/12/25 Javascript
手把手教你搭建ES6的开发运行环境
2017/07/11 Javascript
通过源码分析Vue的双向数据绑定详解
2017/09/24 Javascript
详解Vue组件实现tips的总结
2017/11/01 Javascript
Vue + Vue-router 同名路由切换数据不更新的方法
2017/11/20 Javascript
用Vue.js在浏览器中实现裁剪图像功能
2019/06/18 Javascript
Node.js 实现远程桌面监控的方法步骤
2019/07/02 Javascript
vue elementUI 表单校验的实现代码(多层嵌套)
2019/11/06 Javascript
vue 根据选择条件显示指定参数的例子
2019/11/09 Javascript
[01:45]DOTA2众星出演!DSPL刀塔次级职业联赛宣传片
2014/11/21 DOTA
Python写的Discuz7.2版faq.php注入漏洞工具
2014/08/06 Python
在Django的session中使用User对象的方法
2015/07/23 Python
Python编写一个闹钟功能
2017/07/11 Python
Anaconda 离线安装 python 包的操作方法
2018/06/11 Python
python3+requests接口自动化session操作方法
2018/10/13 Python
对Python w和w+权限的区别详解
2019/01/23 Python
Python3网络爬虫中的requests高级用法详解
2019/06/18 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
python 多线程共享全局变量的优劣
2020/09/24 Python
ECCO爱步美国官网:来自丹麦的鞋履品牌
2016/11/23 全球购物
利用指针变量实现队列的入队操作
2012/04/07 面试题
中学生学习生活的自我评价
2013/10/26 职场文书
电子信息科学专业自荐信
2014/01/30 职场文书
大学优秀班主任事迹材料
2014/05/02 职场文书
525心理活动总结
2014/07/04 职场文书
2014年财务工作总结范文
2014/11/11 职场文书
惊涛骇浪观后感
2015/06/05 职场文书
幼儿园托班开学寄语(2016春季)
2015/12/03 职场文书
SQL实现LeetCode(176.第二高薪水)
2021/08/04 MySQL