Canvas 线条属性

本文详细介绍了Canvas的线条属性,包括lineWidth、lineCap、lineJoin和miterLimit,阐述了它们的作用和效果。同时,通过实例展示了如何利用Canvas绘制五角星,解析了计算五角星顶点坐标的数学原理。

Canvas 线条属性

线条有四种属性:

  • lineWidth:线宽
  • lineCap:设置线条两端的形状。属性值可以为butt(标准,default)/ round / square
    lineCap的效果只能用于线段的开始处和结尾处,不能用于线段的连接处。
  • lineJoin:线条和线条相交的时候所呈现出来的形态。属性值可以为miter(default)/ bevel /
    round。miter:尖角;bevel斜接;round:圆角。
  • miterLimit:当lineJoin为miter时才有效,miterLimit是指当我们选择miter作为线条和线条相接的方式时所产生的内角和外角之间的距离的最大值,默认属性值为10,一旦超过这个值就会选择bevel的方式来显示。

    这里写图片描述

利用canvas画一个五角星:

把五角星的十个顶点分成两组,分别在一个大圆和一个小圆上,加入坐标系(canvas中y轴是向下的),用函数表示十个顶点
这里写图片描述
对于54deg的x、y坐标:x=cos(54deg)*r,y=-sin(54deg)*r
对于18deg的x、y坐标:x=cos(18deg)*r,y=-sin(18deg)*r

/* R为大圆半径,r为小圆半径,x、y为五角星的偏移量,rot为旋转角度 */
    function drawStar(cxt,x,y,R,r,rot,borderWidth,borderColor,fillColor) {
        cxt.beginPath();
        for(var i=0;i<5;i++) {
            //大圆上xy的坐标
            cxt.lineTo(Math.cos((18+i*72-rot)/180*Math.PI)*R +x,-Math.sin((18+i*72-rot)/180*Math.PI)*R +y);
            //小圆上xy的坐标
            cxt.lineTo(Math.cos((54+i*72-rot)/180*Math.PI)*r +x,-Math.sin((54+i*72-rot)/180*Math.PI)*r +y);
        }
        cxt.closePath();

        cxt.lineWidth = borderWidth;
        cxt.fillStyle = fillColor;
        cxt.strokeStyle = borderColor;
        cxt.fill();
        cxt.stroke();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值