首页 > 作文

HTML5 Canvas的常用线条属性值总结

更新时间:2023-04-03 05:31:07 阅读: 评论:0

线条属性概述
线条的属性共有以下四个:
1、linecap属性
linecap 定义上下文中线的端点,可以有以下 3 个值。

butt:默认值,端点是垂直于线段边缘的平直边缘。
round:端点是在线段边缘处以线宽为直径的半圆。
square:端点是在选段边缘处以线宽为长、以一半线宽为宽的矩形。

2、 linejoin属性
linejoin 定义两条线相交产生的拐角,可将其称为连接。在连接处创建一个填充三角形,可以使用 linejoin 设置它的基本属性。

miter:默认值,在连接处边缘延长相接。miterlimit 是角长和线宽所允许的最大比例(默认是 10)。
bevel:连接处是一个对角线斜角。
round:连接处是一个圆。

3、线宽
linewidth 定义线的宽度(默认值为 1.0)。

4、笔触样式
strokestyle 定义线和形状边框的颜色和样式。
后面两个前面已经说过了,这里我们着重来看看前两个属性。
线条的帽子linecap

废话不多说,直接上代码看效果。

javascript code
复制内容到剪贴板

<!doctypehtml> <htmllang=“zh中考分数线是多少”> <head> <metachart=“utf-8”> <title>线条的帽子</title> </head> <body> <divid=“canvas-warp”> <canvasid=“canvas”style=“border:1pxsolid#aaaaaa;display:block;屎壳郎margin:50pxauto;”> 你的浏览器居然不支持canvas?!赶快换一个吧!! </canvas> </div> <script> window.onload=function(){ varcanvas=document.getelementbyid(“canvas”); canvas.width=800; canvas.height=600; varcontext=canvas.getcontext(“2d”); context.linewidth=50; context.strokestyle=“#1baaaa”; context.beginpath(); context.moveto(100,100); context.lineto(700,100); context.linecap=“butt”; context.stroke(); context.beginpath(); context.moveto(100,300); context.lineto(700,300); context.linecap=“round”; context.stroke(); context.beginpath(); context.moveto(100,500); context.lineto(700,500); context.linecap=“square”; context.stroke(); //下面画两个基准线方便观察 context.linewidth=3; context.strokestyle=“black”; context.beginpath(); context.moveto(100,0); context.lineto(100,600); context.moveto(700,0); context.lineto(700,600); context.stroke(); } </script> </body> </html>

运行结果:

这里我还做了两条平行线做一下参考,这样一眼就能看清linecap三个值的特点。但要注意,这个帽子只在线条的端点处起作用,哪怕是折点很多的折线,也仅仅是在开始和终止的两个端点带帽子。如果想改变线条折点(两个线段的连接处)的样式,那就要用到下面的linejoin属性。
线条的连接linejoin

废话不多说,直接上代码看效果。这段代码改自4-3,只是设置了一下连接的属性。

javascript code
复制内容到剪贴板

<!doctypehtml> <htmllang=“zh”> <head> <metachart=“utf-8”> <title>线条的连接</title> </head> <body> <divid=“canvas-warp”> <canvasid=“canvas”style=“border:1pxsolid#aaaaaa;display:block;margin:50pxauto;”> 你的浏览器居然不支持canvas?!赶快换一个吧!! </canvas> </div> <script> window.onload=function(){ varcanvas=document.getelementbyid(“canvas”); canvas.width=800; canvas.height=600; varcontext=canvas.getcontext(“2d”); context.beginpath(); context.moveto(100,100); context.lineto(300,300); context.lineto(100,500); context.linejoin=“miter”; context.linewidth=20; context.strokestyle=“red”; context.stroke(); context.beginpath(); context.moveto(300,100); context.lineto(500,300); context.lineto(300,500); context.linejoin=“bevel”; context.linewidth=20; context.strokestyle=“blue”; context.stroke(); context.beginpath(); context.moveto(500,100); context.lineto(700,300); context.lineto(500,500); context.linejoin=“round”; context.linewidth=20; context.strokestyle=“black”; context.stroke(); } </script> </body> </html>

运行结果:

看不清的童鞋自己放大网页或者自己将代码的线宽调宽一点。
这里有一个很隐蔽的属性,就是当linejoin设置为miter时(默认),会解锁一个成绩,可以使用miterlimit属性。
举个例子看看。

javascript code
复制内容到剪贴板

<!doctypehtml> <htmllang=“zh”> <head> <metachart=“utf-8”> <title>miterlimit</title> </head> <body> <divid=“canvas-warp”> <canvasid=“canvas”style=“border:1pxsolid#aaaaaa;display:block;margin:50pxauto;”> 你的浏览器居然不支持canvas?!赶快换一个吧!! </canvas> </div> <script> window.onload=function(){ varcanvas=document.getelementbyid(“canvas”); canvas.width=800; canvas.height=600; varcontext=canvas.getcontext(“2d”); context.beginpath(); context.moveto(100,100); context.lineto(300,300); context.lineto(100,500); context.linejoin=“miter”; context.miterlimit=10; context.linewidth=5; c陌上桑全文注音版ontext.strokestyle=“red”; context.stroke(); context.beginpath(); context.moveto(300,200); context.lineto(500,300); context.lineto(300,400); context.linejoin=“miter”; context.miterlimit=10; context.linewidth=5; context.strokestyle=“blue”; context.stroke(); context.beginpath(); context.moveto(500,290); context.lineto(700,300); context.lineto(500,310); context.linejoin=“miter”; context.miterlimit=10; context.linewidth=5; context.strokestyle=“black”; context.stroke(); } </script> </body> </html>

运行结果:

会发现,这个miterlimit规定了一个自动填充连接点的极限值。如果超过了这个值,会导致linejoin属性失效,会从 miter 变成 bevel。可以看出来,这个值和线宽以及夹角有关,具体是啥关系。看下图。

可以看到,关系有点复杂。有兴趣的小伙伴可以推导一下这个值与线宽、夹角的函数关系。其实,大多时候用不到这个隐藏属性,即便用到了也是凭感觉写个数然后不满意再调试即可。
高级线段绘制举例
实际在画布上绘制线段时,会有一些奇怪的现象发生,这里融合本节课学到的两个线段的属性讲解一个。

javascript code
复制内容到剪贴板

<!doctypehtml> <htmllang=“zhRps学习技巧21;> <head> <metachart=“utf-8”> <title>miterlimit</title> </head> <body> <divid=“canvas-warp”> <canvasid=“canvas”style=“border:1pxsolid#aaaaaa;display:block;margin:50pxauto;”> 你的浏览器居然不支持canvas?!赶快换一个吧!! </canvas> </div> <script> window.onload=function(){ varcanvas=document.getelementbyid(“canvas”); canvas.width=800; canvas.height=600; varcontext=canvas.getcontext(“2d”); /内蒙古大学/实例1:圆形端点,斜角连接,在画布左上角 context.beginpath(); context.moveto(0,0); context.lineto(180,0); context.lineto(180,180); context.linejoin=‘bevel’; context.linecap=’round’; context.linewidth=10; context.strokestyle=“red”; context.stroke(); //实例2:圆形端点,斜角连接,不在画布左上角 context.beginpath(); context.moveto(300,200); context.lineto(480,200); context.lineto(480,380); context.linejoin=‘bevel’; context.linecap=’round’; context.linewidth=10; context.strokestyle=“blue”; context.stroke(); //实例3:平直端点,圆形连接,不在画布左上角 context.beginpath(); context.moveto(600,400); context.lineto(780,400); context.lineto(780,580); context.linejoin=’round’; context.linecap=‘butt’; context.linewidth=10; context.strokestyle=“black”; context.stroke(); } </script> </body> </html>

运行结果:

这 3 个线段和连接的实例有助于说明在画布上绘制线段时不同属性的组合。
实例 1 尝试从画布左上角开始绘制,结果发生了一个奇怪的现象。canvas 路径在 x 轴和 y 轴方向上都绘制到了起点的外侧。由于这个原因实例 1 上面的线看起来要细些。另外,左上角水平部分中圆形端点也无法看到,它们都被绘制到了屏幕之外的负值坐标区域。此外,linejoin 定义的对角线斜角也没有绘出。
实例 2 调整了例子 1 中出现的问题,将起始点离开左上角。这样就绘制出了完整的水平线,并且圆形 linecap 和斜角 linejoin 都被绘制出来了。
实例 3 显示了去掉 linecap 设置后的默认端点效果,并且将 linejoin 调整为圆角。

本文发布于:2023-04-03 05:31:04,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/392b83d6c3056f25d7a667b8b2d72ca0.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:HTML5 Canvas的常用线条属性值总结.doc

本文 PDF 下载地址:HTML5 Canvas的常用线条属性值总结.pdf

标签:属性   线段   画布   斜角
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图