canvas(二)直线样式和虚线
1.设置直线线帽的样式
- 相关语法:ctx.lineCap,通过赋值形式来设置直线线帽的样式,他有以下3个值:
| 值 | 说明 |
|---|---|
| butt | 默认 |
| round | 圆形线帽 |
| square | 正方形线帽 |
<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d")
// 默认的直线
ctx.moveTo(50,50)
ctx.lineTo(250,50)
ctx.lineWidth = 30
ctx.stroke()
// .lineCap = butt
ctx.beginPath()
ctx.moveTo(50,100)
ctx.lineTo(250,100)
ctx.strokeStyle = "yellow"
ctx.lineCap = "butt"
ctx.stroke()
// .lineCap = round
ctx.beginPath()
ctx.moveTo(50,150)
ctx.lineTo(250,150)
ctx.strokeStyle = "red"
ctx.lineCap = "round"
ctx.stroke()
// .lineCap = square
ctx.beginPath()
ctx.moveTo(50,200)
ctx.lineTo(250,200)
ctx.strokeStyle = "blue"
ctx.lineCap = "square"
ctx.stroke()
</script>

2.设置直线的拐点样式
- 相关语法:ctx.lineJoin,通过赋值的形式来设置直线的拐点样式,他有3个可能的值:
| 值 | 说明 |
|---|---|
| miter | 尖的 |
| round | 圆的 |
| bevel | 平的 |
<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d")
// 默认的直线
ctx.moveTo(50,100)
ctx.lineTo(200,50)
ctx.lineTo(350,100)
ctx.lineWidth = 30
ctx.stroke()
// lineJoin = "miter"
ctx.beginPath()
ctx.moveTo(50,150)
ctx.lineTo(200,100)
ctx.lineTo(350,150)
ctx.strokeStyle = "yellow"
ctx.lineJoin = "miter"
ctx.stroke()
// lineJoin = "round"
ctx.beginPath()
ctx.moveTo(50,200)
ctx.lineTo(200,150)
ctx.lineTo(350,200)
ctx.strokeStyle = "red"
ctx.lineJoin = "round"
ctx.stroke()
// lineJoin = "bevel"
ctx.beginPath()
ctx.moveTo(50,250)
ctx.lineTo(200,200)
ctx.lineTo(350,250)
ctx.strokeStyle = "blue"
ctx.lineJoin = "bevel"
ctx.stroke()
</script>

3.绘制虚线
- 相关语法:setLineDash(arr)
- 参数说明:它的参数是一个由数字组成的数组,虚线是实虚交替的,这个数组的元素用来描述实边长度和虚边的长度
- 注意:一旦设置成虚线,后面的直线就会继承设置,结果全部绘制成虚线,想要取消,可以重新设置成setLineDash([1,0])
<script>
var canvas = document.querySelector("canvas")
var ctx = canvas.getContext("2d")
// 默认直线绘制成实线
ctx.moveTo(50,50)
ctx.lineTo(300,50)
ctx.lineWidth = 3
ctx.stroke()
// 虚线长度为0则绘制成实线
ctx.beginPath()
ctx.moveTo(50,100)
ctx.lineTo(300,100)
ctx.setLineDash([1,0])
ctx.stroke()
// 设置虚线长度大于0
ctx.beginPath()
ctx.moveTo(50,150)
ctx.lineTo(300,150)
ctx.setLineDash([5,10])
ctx.stroke()
</script

canvas(二)直线样式和虚线的更多相关文章
- 8-2 canvas专题-线条样式
8-2 canvas专题-线条样式 学习要点 对第五章知识进行简单的回顾和总结 进一步讲解canvas绘图相关的知识点 第八章内容介绍 在第八章中我们将对以前的知识进行简单的回顾,着重对canvas绘 ...
- css入门二-常用样式
css入门二-常用样式总结 基本标签样式 背景色background-color 高度height; 宽度width; 边框对齐以及详细设定举例 width/*宽度*/: 80%; height/*高 ...
- canvas设置线条样式
canvas设置线条样式 合法属性和方法 lineWidth = value 设置线宽 lineCap = type 设置线端点样式 lineJoin = type 设置线交合处样式 setLineD ...
- JS学习-给Canvas上下文设置样式
给Canvas上下文设置样式 <canvas class="myCanvas" width="700" height="500"> ...
- 封装 用canvas绘制直线的函数--面向对象
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- ☀【canvas】直线 / 三角形 / 矩形 / 曲线 / 控制点 / 变换
<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8& ...
- HTML5 Canvas自定义圆角矩形与虚线(Rounded Rectangle and Dash Line)
HTML5 Canvas自定义圆角矩形与虚线(RoundedRectangle and Dash Line) 实现向HTML Canvas 2d context绘制对象中添加自定义的函数功能演示,如何 ...
- canvas绘制直线
HTML5 <canvas>元素用于图形的绘制,该元素只是图形容器,必须使用javascript脚本绘制图形创建一个画布:<canvas id="myCanvas" ...
- 基于canvas二次贝塞尔曲线绘制鲜花
canvas中二次贝塞尔曲线参数说明: cp1x:控制点1横坐标 cp1y:控制点1纵坐标 x: 结束点1横坐标 y:结束点1纵坐标 cp2x:控制点2横坐标 cp2y:控制点2纵坐标 z:结束点2横 ...
- 第155天:canvas(二)
一.添加样式和颜色 在前面的绘制矩形章节中,只用到了默认的线条和颜色. 如果想要给图形上色,有两个重要的属性可以做到. fillStyle = color 设置图形的填充颜色 strokeSt ...
随机推荐
- AI实战 | 领克汽车线上营销助手:全面功能展示与效果分析
助手介绍 我就不自我介绍了,在我的智能体探索之旅中,很多人已经通过coze看过我的教程.今天,我专注于分享我所开发的一款助手--<领克汽车线上营销>. 他不仅仅是一个销售顾问的替身,更是一 ...
- [rCore学习笔记 027]地址空间
写在前面 本随笔是非常菜的菜鸡写的.如有问题请及时提出. 可以联系:1160712160@qq.com GitHhub:https://github.com/WindDevil (目前啥也没有 引言 ...
- JavaScript——基础语法
书写语法 输出语句 变量 数据类型 运算符 == 与 === 区别: ==: 1.判断类型是否一样,如果不一样,则进行类型转换 ...
- Kubernetes基础(kube-apiserver?kube-controller-manager?kube-scheduler?kubelet?kube-proxy?kubectl?)(十一)
一.kube-apiserver API Server 提供了资源对象的唯一操作入口,其它所有组件都必须通过它提供的 API 来操作资源数据.只有 API Server 会与 etcd 进行通信,其它 ...
- C#/.NET/.NET Core技术前沿周刊 | 第 7 期(2024年9.23-9.30)
前言 C#/.NET/.NET Core技术前沿周刊,你的每周技术指南针!记录.追踪C#/.NET/.NET Core领域.生态的每周最新.最实用.最有价值的技术文章.社区动态.优质项目和学习资源等. ...
- 在Vue3中如何实现四种全局状态数据的统一管理?
四种全局状态数据 在实际开发当中,会遇到四种全局状态数据:异步数据(一般来自服务端).同步数据.同步数据又分为三种:localstorage.cookie.内存.在传统的 Vue3 当中,分别采用不同 ...
- JDK线程池详解(全网最全-原理解析、源码详解)
频繁创建新线程的缺点? 不受控风险 系统资源有限,每个人针对不同业务都可以手动创建线程,并且创建标准不一样(比如线程没有名字).当系统运行起来,所有线程都在疯狂抢占资源,毫无规则,不好管控. 另外,过 ...
- 探索 PCI 转 PMC 载板转接卡:连接不同接口的桥梁
探索 PCI 转 PMC 载板转接卡:连接不同接口的桥梁 在计算机硬件领域,各种接口和总线标准不断演进,以满足日益增长的性能和功能需求.在这个过程中,不同接口之间的转换设备应运而生,其中 PCI 转 ...
- 使用 KubeEye 为你的 K8s 集群安全保驾护航
作者:KaliArch(薛磊),某Cloud MSP服务商产品负责人,熟悉企业级高可用/高并发架构,包括混合云架构.异地灾,熟练企业DevOPS改造优化,熟悉Shell/Python/Go等开发语言, ...
- 2024 Navicat Premium 16+17安装教程(附激活方法)
Navicat Premium,作为一款功能全面的集成数据库管理工具,无缝支持多样化的数据库类型,为用户带来前所未有的高效与便捷管理体验.它不仅涵盖了连接管理.数据导入导出.同步迁移.备份恢复等核心功 ...