原生canvas标签画线——直线、平行线(设置不同颜色和宽度)

news/2025/1/31 6:09:35/

1.一条直线

效果图如下:

 代码如下:

<!--* @Author: your name* @Date: 2023-05-24 17:50:28* @LastEditTime: 2023-05-24 18:06:39* @LastEditors: localhost* @Description: In User Settings Edit* @FilePath: /canvas/day01/体验canvas.html
-->
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>canvas {border: 1px solid #ccc;}</style>
</head><body><!-- canvas的大小在行内设置,在style里面设置的宽高会使画布变形 --><canvas width="200" height="100"></canvas><script>// 1.获取元素var mycanvas = document.querySelector('canvas');// 2.获取上下文,绘制工具箱var ctx = mycanvas.getContext('2d');// 3.移动画笔ctx.moveTo(50, 50)// 4.绘制直线(轨迹,绘制路径)ctx.lineTo(100, 50);// 5.描边ctx.stroke();</script>
</body></html>

2.画两条平行线

效果如下:

代码如下:

<body><canvas width="300" height="200"></canvas><script>var mycanvas=document.querySelector('canvas')var ctx=mycanvas.getContext('2d')// 平行线的第一条线ctx.moveTo(50,50)ctx.lineTo(200,50)// 平行线的第二条线ctx.moveTo(50,70)ctx.lineTo(200,70)// 描边ctx.stroke()</script>
</body>

/ 有关线条 /

线条宽度,1px

线条颜色,黑色

线条的显示肉眼感觉是灰色且比1px粗一点?对齐的点是线的中心位置,会把线分成两个0.5px,显示会不饱和增加宽度

解决方法:前后移动0.5px

3.画三条不同颜色宽度的平行线

效果图如下:

代码如下:

<!--* @Author: your name* @Date: 2023-05-24 18:22:50* @LastEditTime: 2023-05-24 18:28:37* @LastEditors: localhost* @Description: In User Settings Edit* @FilePath: /canvas/day01/线条颜色.html
-->
<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title>
</head><body><canvas width="300" height="200"></canvas><script>var mycanvas = document.querySelector('canvas')var ctx = mycanvas.getContext('2d')// 开启新路径ctx.beginPath()// 平行线的第一条线ctx.moveTo(50, 50)ctx.lineTo(200, 50)ctx.strokeStyle = 'bule'ctx.lineWidth = 10;ctx.stroke()// 开启新路径ctx.beginPath()// 平行线的第二条线ctx.moveTo(50, 70)ctx.lineTo(200, 70)ctx.strokeStyle = 'green'ctx.lineWidth = 5;ctx.stroke()// 开启新路径ctx.beginPath()// 平行线的第三条线ctx.moveTo(50, 90)ctx.lineTo(200, 90)ctx.strokeStyle = 'pink'ctx.lineWidth = 8;// 描边ctx.stroke()</script>
</body></html>

 tips:

1.画一条单独样式的线要开启新路径 ctx.beginPath()

2.设置线条颜色 ctx.strokeStyle = 'bule'

3.设置线条宽度 ctx.lineWidth = 10;

4.开启新路径之后都要有描边的代码,不然不会显示效果

4.换一个三角形

效果如下:

代码如下:

<!--* @Author: your name* @Date: 2023-05-24 18:34:09* @LastEditTime: 2023-05-24 18:44:47* @LastEditors: localhost* @Description: In User Settings Edit* @FilePath: /canvas/day01/绘制填充三角形颜色.html
-->
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta http-equiv="X-UA-Compatible" content="IE=edge"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Document</title><style>canvas{border: 1px solid #ccc;}</style>
</head>
<body><canvas width="400" height="200"></canvas><script>var mycanvas=document.querySelector('canvas')var ctx=mycanvas.getContext('2d')ctx.moveTo(50,50)ctx.lineTo(100,50)ctx.lineTo(100,100)ctx.lineTo(50,50)// 描边ctx.stroke()</script>
</body>
</html>

 延伸

当如上三角形给10px的宽度(ctx.lineWidth = 10),会出现一个角有缺口的情况

 解决这个问题,我们要用一个新的语法 ctx.closePath() --关闭路径,达到效果

补充:

lineWidth 设置线的宽度,默认1px

lineCap 线末端的类型,默认butt、round、square

lineJoin 相交线的拐点,默认miter、round、bevel

strokeStyle 线的颜色

fillStyle 填充的颜色

setLineDash([5 , 10]) 设置虚线【其中[5,10]是用来设置线和空白位置的px,数组里面也可以写多个数字】

getLineDash() 获取虚线宽度集合

lineDashOffset() 设置虚线偏移量(负值向右偏移)


http://www.ppmy.cn/news/97299.html

相关文章

Hive 实现ACID

Hive官方提示&#xff0c;Hive在版本0.14之后可以支持对表数据的UPDATE和DELETE&#xff1a; 具体操作如下&#xff1a; -- 环境参数设置 set hive.support.concurrencytrue; set hive.txn.managerorg.apache.hadoop.hive.ql.lockmgr.DbTxnManager;-- 建表&#xff0c;以ORC的…

AI周报-一周发生两次Ai事件;DragGAN 问世

&#x1f680; AI 图像编辑技术 DragGAN 问世&#xff0c;用户可以通过拖拽改变汽车大小或人物表情等 近日&#xff0c;马克斯・普朗克计算机科学研究所研究者们推出了一种控制GAN的新方法DragGAN&#xff0c;用户可以通过拖拽改变汽车大小或人物表情等。 DragGAN类似于Photo…

数组的存储和压缩

数组 定义 一维数组是有限个相同类型的数据元素构成的序列&#xff0c;逻辑关系是相邻关系 推广&#xff1a;一个二维数组可以看作相同类型的一维数组的一维数组&#xff1b;n维数组可以看作以n-1维数组作为元素的线性表 性质 数组中的数据元素数目…

ASP.NET基于Ajax+Lucene构建搜索引擎的设计和实现(源代码+论文)

通过搜索引擎从互联网上获取有用信息已经成为人们生活的重要组成部分,Lucene是构建搜索引擎的其中一种方式。搜索引擎系统是在.Net平台上用C#开发的,数据库是MSSQL Server 2000。主要完成的功能有:用爬虫抓取网页;获取有效信息放入数据库;通过Lucene建立索引;对简单关键字…

JavaScript 使用误区

在使用 JavaScript 进行开发时&#xff0c;有一些常见的误区需要注意。以下是一些常见的 JavaScript 使用误区&#xff1a; 1. 不使用严格比较运算符&#xff1a;JavaScript 提供了松散比较运算符&#xff08;例如&#xff09;&#xff0c;它会自动进行类型转换。这可能导致一…

html和css复习1

HTML 1. src和href的区别 src和href都是用来引用外部的资源&#xff0c;它们的区别如下&#xff1a; src&#xff1a; 表示对资源的引用&#xff0c;它指向的内容会嵌入到当前标签所在的位置。src会将其指向的资源下载并应⽤到⽂档内&#xff0c;如请求js脚本。当浏览器解析到…

Linux—基础篇:目录结构

1、基本介绍 1、linux的文件系统是采用级层式的树状目录结构&#xff0c;在此结构的最上层是根目录“/”,然后在此目录下创建其他目录 2、在Linux的世界里&#xff0c;一切皆文件&#xff01;&#xff01;&#xff01; 2、具体的目录结构 不用背&#xff0c;知道即可 2.1、…

python入门(13)异常与文件

1. 异常 1.1 异常处理机制 在 Python 中&#xff0c;异常是指程序在运行过程中出现的错误或异常情况。当程序执行到出现错误的代码时&#xff0c;会引发异常&#xff0c;并导致程序中断执行。异常的出现可能是由于程序的错误、不合理的输入、外部环境的变化等引起的。 异常处…