iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >canvas线条属性的示例分析
  • 132
分享到

canvas线条属性的示例分析

2023-06-09 15:06:12 132人浏览 薄情痞子
摘要

这篇文章主要介绍了canvas线条属性的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、线条的帽子lineCap取值:butt(默认值),round圆头,squar

这篇文章主要介绍了canvas线条属性的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

一、线条的帽子lineCap

取值:butt(默认值),round圆头,square方头

var canvas=document.getElementById("canvas");canvas.width=800;canvas.height=800;var context=canvas.getContext("2d");context.lineWidth=40;context.strokeStyle="#005588";//三个beginpath()画了3条平行线context.beginPath();context.moveTo(100,200);context.lineTo(700,200);context.lineCap="butt";context.stroke();context.beginPath();context.moveTo(100,400);context.lineTo(700,400);context.lineCap="round";context.stroke();context.beginPath();context.moveTo(100,600);context.lineTo(700,600);context.lineCap="square";context.stroke();//baselinecontext.lineWidth=1;context.strokeStyle="#27a";context.moveTo(100,100);context.lineTo(100,700);context.moveTo(700,100);context.lineTo(700,700);context.stroke();

canvas线条属性的示例分析

round做动画的时候需要圆角可以直接画,lineCap的效果只能用于线段的开始处和结尾处,不能用于连接处。

canvas线条属性的示例分析

lineCap="square"可以用来在线段闭合时候完全闭合,但是还是推荐使用clothPath()闭合。

var canvas=document.getElementById("canvas");canvas.width=800;canvas.height=800;var context=canvas.getContext("2d");context.beginPath();context.moveTo(100, 350);context.lineTo(500,350);context.lineTo(500,200);context.lineTo(700,400);context.lineTo(500,600);context.lineTo(500,450);context.lineTo(100,450);context.lineTo(100,350);// context.closePath(); //推荐context.lineWidth=10;context.lineCap="square"; //不推荐context.fillStyle="yellow";context.strokeStyle="#058"context.fill();context.stroke();

二、画一个五角星,说明线条其它状态属性

canvas线条属性的示例分析

圆上的五个角平分360°,每个角72°,90°-72°=18°

小圆上的角平分72°,18°+36°=54°

角度转弧度——弧度=角度*π/180 即(18+i*72)*Math.PI/180

var canvas=document.getElementById("canvas");canvas.width=800;canvas.height=800;var context=canvas.getContext("2d");context.beginPath();//角度转弧度:除以180*PIfor(var i=0;i<5;i++){    context.lineTo(Math.cos((18+i*72)/180*Math.PI)*300+400,        -Math.sin((18+i*72)/180*Math.PI)*300+400);    context.lineTo(Math.cos((54+i*72)/180*Math.PI)*150+400,        -Math.sin((54+i*72)/180*Math.PI)*150+400);}context.closePath();context.lineWidth=10;context.stroke();

canvas线条属性的示例分析

封装成函数:

window.onload=function(){    var canvas=document.getElementById("canvas");    canvas.width=800;    canvas.height=800;    var context=canvas.getContext("2d");    context.lineWidth=10;    drawStar(context,150,300,400,400)}        function drawStar(ctx,r,R,x,y,){    ctx.beginPath();    //角度转弧度:除以180*PI    for(var i=0;i<5;i++){        ctx.lineTo(Math.cos((18+i*72)/180*Math.PI)*R+x,            -Math.sin((18+i*72)/180*Math.PI)*R+y);            ctx.lineTo(Math.cos((54+i*72)/180*Math.PI)*r+x,            -Math.sin((54+i*72)/180*Math.PI)*r+y);    }    ctx.closePath();    ctx.stroke();}

分别修改小r=80,200,400得到下面图形

canvas线条属性的示例分析 

canvas线条属性的示例分析 

canvas线条属性的示例分析

增加一个顺时针旋转的参数:rot

window.onload=function(){    var canvas=document.getElementById("canvas");    canvas.width=800;    canvas.height=800;    var context=canvas.getContext("2d");    context.lineWidth=10;    drawStar(context,150,300,400,400,30);}        //rot顺时针旋转的角度function drawStar(ctx,r,R,x,y,rot){    ctx.beginPath();    //角度转弧度:除以180*PI    for(var i=0;i<5;i++){        ctx.lineTo(Math.cos((18+i*72-rot)/180*Math.PI)*R+x,            -Math.sin((18+i*72-rot)/180*Math.PI)*R+y);            ctx.lineTo(Math.cos((54+i*72-rot)/180*Math.PI)*r+x,            -Math.sin((54+i*72-rot)/180*Math.PI)*r+y);    }    ctx.closePath();    ctx.stroke();}

旋转30度的效果如下:

canvas线条属性的示例分析

三、线条的连接lineJoin和miterLimit

lineJoin取值

miter(default)永远呈现一个尖角,bevel斜接,round圆角

bevel像彩带折下来的效果。

canvas线条属性的示例分析 

canvas线条属性的示例分析 

canvas线条属性的示例分析 

miter相关miterLimit的属性

设置小r为30,lineJoin为miter,效果如下:角没有延伸成尖角,而是采取bevel的方式来显示。

context.lineJoin="miter";drawStar(context,30,300,400,400,30);

canvas线条属性的示例分析

为什么?

因为context.miterLimit=10默认值是10,

miterlimit只有当lineJoin为miter时才会有效。

miterLimit指的是,当使用miter作为线条和线条相接的方式时,所 产生的内角和外角的距离的最大值

默认值是10就代表最大值是10px,一旦超过来10px就会使用bevel的方式显示。

上面把内圆半径r设置为30时,形成的尖角非常尖,内角和外角的距离超过来miterLimit的10,

现在把miterlimit改大点,改成20,效果如下:

context.lineJoin="miter"; context.miterLimit=20; drawStar(context,30,300,400,400,30);

canvas线条属性的示例分析

注意:miterLimit并不是从白色尖尖到黑色尖尖的距离,这个距离远远大于20px。

canvas线条属性的示例分析

当产生miterLimit时一定是线条有宽度的,有宽度的线条中间的线的尖角与外边尖角直接的距离。

canvas给出一个miterLimit的经验值10。只有在极其特别的情况下,需要表现非常尖锐的角的时候才需要修改miterLimit。

感谢你能够认真阅读完这篇文章,希望小编分享的“canvas线条属性的示例分析”这篇文章对大家有帮助,同时也希望大家多多支持编程网,关注编程网精选频道,更多相关知识等着你来学习!

--结束END--

本文标题: canvas线条属性的示例分析

本文链接: https://www.lsjlt.com/news/256419.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • canvas线条属性的示例分析
    这篇文章主要介绍了canvas线条属性的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。一、线条的帽子lineCap取值:butt(默认值),round圆头,squar...
    99+
    2023-06-09
  • canvas中globalCompositeOperation属性的示例分析
    这篇文章给大家分享的是有关canvas中globalCompositeOperation属性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。说明最早知道 canvas 的 globalCompositeO...
    99+
    2023-06-14
  • HTML5新特性与Canvas常用属性的示例分析
    这篇文章主要介绍HTML5新特性与Canvas常用属性的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完! 1.HTML5的内容类型 内容类型 描述 内嵌 向文档中添加其他...
    99+
    2024-04-02
  • Linux中线程属性的示例分析
    这篇文章主要为大家展示了“Linux中线程属性的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Linux中线程属性的示例分析”这篇文章吧。我们在调用pthread_create函数创建线...
    99+
    2023-06-15
  • python属性的示例分析
    这篇文章主要介绍了python属性的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。属性(property)##不推荐 class&n...
    99+
    2024-04-02
  • mybatis属性的示例分析
    这篇文章给大家分享的是有关mybatis属性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。前言MyBatis是基于“数据库结构不可控”的思想建立的,也就是我们希望数据库...
    99+
    2024-04-02
  • CSS中线性渐变linear-gradient属性的示例分析
    小编给大家分享一下CSS中线性渐变linear-gradient属性的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧! ...
    99+
    2024-04-02
  • HTML5中Canvas画线技巧的示例分析
    这篇文章主要为大家展示了“HTML5中Canvas画线技巧的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML5中Canvas画线技巧的示例分析”这...
    99+
    2024-04-02
  • CSS属性之定位属性的示例分析
    小编给大家分享一下CSS属性之定位属性的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!CSS的定位属性有三种,分别是绝对定位、相对定位、固定定位。posi...
    99+
    2023-06-08
  • CSS属性MASK的示例分析
    小编给大家分享一下CSS属性MASK的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!顾名思义,mask 译为遮罩。在 CSS 中,mask 属性允许使用者通过遮罩或者裁切特定区域的图片的方式来隐藏一个元素的部分或者...
    99+
    2023-06-08
  • React中ref属性的示例分析
    这篇文章主要介绍了React中ref属性的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。概述首先,Refs 和 ref 是两个概念,Refs 是 React 提供的可...
    99+
    2023-06-15
  • Spring中Transactional属性的示例分析
    小编给大家分享一下Spring中Transactional属性的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!一、Transactional声明式事务管理...
    99+
    2023-06-15
  • html5全局属性的示例分析
    这篇文章主要介绍了html5全局属性的示例分析,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。1.accesskey accesskey属性允...
    99+
    2024-04-02
  • vue-router append属性的示例分析
    这篇文章将为大家详细讲解有关vue-router append属性的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。 append 类型: boolean 默...
    99+
    2024-04-02
  • css3过渡属性的示例分析
    这篇文章将为大家详细讲解有关css3过渡属性的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。     多项改变    ...
    99+
    2024-04-02
  • HTML全局属性的示例分析
    这篇文章主要为大家展示了“HTML全局属性的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“HTML全局属性的示例分析”这篇文章吧。   &n...
    99+
    2024-04-02
  • JavaScript属性操作的示例分析
    这篇文章将为大家详细讲解有关JavaScript属性操作的示例分析,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。一、属性的设置和获取1、属性的设置和获取主要有两种方式:<!DOCTYPE ...
    99+
    2023-06-29
  • canvas之绘制路径-线段的示例分析
    小编给大家分享一下canvas之绘制路径-线段的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!Canvas绘图环境中有些属于立即绘制图形方法,有些绘图方法...
    99+
    2023-06-09
  • CSS属性text-overflow的示例分析
    这篇文章主要为大家展示了“CSS属性text-overflow的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“CSS属性text-overflow的示例...
    99+
    2024-04-02
  • CSS定位属性的示例分析
    这篇文章给大家分享的是有关CSS定位属性的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。   1.定位的专业解释   (1)语法   position:static...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作