canvas示例教程100+专栏,提供canvas的基础知识,高级动画,相关应用扩展等信息。canvas作为html的一部分,是图像图标地图可视化的一个重要的基础,学好了canvas,在其他的一些应用上将会起到非常重要的帮助。
canvas是线条样式主要表现为以下这几个方面
值必须为正数,默认值为 1
。
let canvas = document.getElementById(‘dajianshi’);
let ctx = canvas.getContext(‘2d’)
ctx.moveTo(10, 10)
ctx.lineWidth = 10
ctx.lineTo(10, 80)
ctx.stroke()
lineGap 有三个取值:butt、round、square
,默认值为 butt.
中间的 lineGap 值为 round 左边的为 butt 右边的为 square。
其中两条蓝色的两条线为辅助线,让三条垂直线条的区别更加明显。它们的区别主要体现在两个方面: + butt 和 square 的端点是直角拐点,round 的端点是一个圆弧 + 在起点、终点都在辅助线上的情况下,round 和 square 会在原来的起点和终点的基础上分别延伸半个线条宽度的距离,round 延伸的是直径为线宽的半圆,square 延伸的是一个宽为线宽高为线宽一半的矩形。
设置线段拐点处的样式。它有三个取值:round、bevel、miter
(默认值)
根据 lineJoin 的不同取值绘制三条折线线段。如上图,最上面的路径 lineJoin 值为 round,中间的为 bevel,最下面的为 miter
。红色的圆为辅助圆,直观的表现出 round 的连接点外侧为一个圆弧。
语法:
context.miterLimit=number;
正数。规定最大斜接长度。默认值为10
miterLimit 属性设置或返回最大斜接长度。斜接长度指的是在两条线交汇处内角和外角之间的距离。只有当 lineJoin 属性为 "miter" 时,miterLimit 才有效
。
为了避免斜接长度过长,我们可以使用 miterLimit 属性。如果斜接长度超过 miterLimit 的值,边角会以 lineJoin 的 “bevel” 类型来显示(图解 3)
ctx.setLineDash([])
如果数组内为空,则为一条直线;
如果数字内为奇数个,则循环,如[1,2,3] 模式将为[1,2,3,1,2,3,1,2,3…] 奇数位为线段宽度;偶数位为间隔的宽度。
如果数字内为偶数个,也是循环如[2,5]模式将为[2,5,2,5…]
虚线绘制,涉及到 setLineDash 方法
和 lineDashOffset
属性。setLinedash 接受一个数组用于设置虚线线段和间隙的宽度,lineDashOffset 用于设置相对于虚线初始位置的偏移量。
let canvas = document.getElementById('canvas')
let ctx = canvas.getContext('2d');
function drawDash(){
ctx.setLineDash([4, 2])
ctx.lineDashOffset = 0
ctx.strokeRect(10, 10, 100, 40)
ctx.setLineDash([8, 4])
ctx.lineDashOffset = 0
ctx.strokeRect(10, 60, 100, 40)
}
drawDash()