2.2.1 绘制Canvas路径 - 绘制线条

news2024/10/25 21:31:27

文章目录

  • 1. 绘制线条
  • 2. 绘制具有不同结束线帽的线条
  • 3. 绘制向阳花图形

在这里插入图片描述
今天我们要一起探讨的是如何使用HTML5的Canvas元素来绘制各种图形。Canvas提供了一个强大的图形绘制API,使我们能够在网页上绘制出各种复杂的图形和动画。接下来,我将通过几个实战示例,带领大家了解Canvas的基本用法。

1. 绘制线条

绘制线条是Canvas中最基本的操作。首先,我们需要获取Canvas的2D渲染上下文,然后使用moveTo方法设置线条的起点,接着用lineTo方法指定线条的终点,最后调用stroke方法完成绘制。

const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
ctx.beginPath();
ctx.moveTo(0, 0);
ctx.lineTo(400, 200);
ctx.strokeStyle = 'red';
ctx.stroke();

这段代码将在Canvas上绘制一条从左上角(0, 0)到右下角(400, 200)的红色直线。

2. 绘制具有不同结束线帽的线条

在绘制直线时,我们还可以设置线帽的样式,来控制线条末端的形状。Canvas提供了三种线帽样式:buttroundsquare

ctx.lineWidth = 10;
ctx.lineCap = "butt"; // 平直的线帽
ctx.moveTo(20, 20);
ctx.lineTo(380, 20);
ctx.strokeStyle = "red";
ctx.stroke();

ctx.lineCap = "round"; // 圆形的线帽
ctx.moveTo(20, 40);
ctx.lineTo(380, 40);
ctx.strokeStyle = "green";
ctx.stroke();

ctx.lineCap = "square"; // 方形的线帽
ctx.moveTo(20, 60);
ctx.lineTo(380, 60);
ctx.strokeStyle = "blue";
ctx.stroke();

这段代码绘制了三条具有不同线帽样式的线条,展示了如何在Canvas上控制线条的细节。

3. 绘制向阳花图形

接下来,让我们绘制一个向阳花图形。这个图形由多个黄色的花瓣和深蓝色的轮廓组成,非常适合用来展示Canvas的绘制能力。

const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');
ctx.fillStyle = "#eeeeef";
ctx.fillRect(0, 0, 300, 300);

var dx = 150;
var dy = 150;
var s = 100;
ctx.beginPath();
ctx.fillStyle = "rgb(255, 255, 0)";
ctx.strokeStyle = "rgb(0, 0, 100)";
var dig = Math.PI / 15 * 11;
for (var i = 0; i < 30; i++) {
    var x = Math.sin(dig * i);
    var y = Math.cos(dig * i);
    ctx.lineTo(dx + x * s, dy + y * s);
}
ctx.closePath();
ctx.fill();
ctx.stroke();

这段代码首先绘制了一个淡灰色的背景,然后在中心绘制了一个向阳花图形。


通过以上示例,我们可以看到Canvas API的强大和灵活。无论是简单的线条还是复杂的图形,Canvas都能轻松应对。希望今天的分享能够帮助大家更好地理解和使用Canvas。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2210649.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

从Naive RAG到Agentic RAG:基于Milvus构建Agentic RAG

检索增强生成&#xff08;Retrieval-Augmented Generation, RAG&#xff09;作为应用大模型落地的方案之一&#xff0c;通过让 LLM 获取上下文最新数据来解决 LLM 的局限性。典型的应用案例是基于公司特定的文档和知识库开发的聊天机器人&#xff0c;为公司内部人员快速检索内部…

如何在数仓中处理缓慢变化维度(SCD)

在数据仓库中&#xff0c;处理缓慢变化维度&#xff08;SCD&#xff0c;Slowly Changing Dimension&#xff09;是一个非常常见且重要的问题。为了保证数据的完整性和准确性&#xff0c;我们通常会采取不同的策略来处理维度表中的数据变化。SCD的核心解决方案是通过不同类型的历…

Run the FPGA VI 选项的作用

Run the FPGA VI 选项的作用是决定当主机 VI 运行时&#xff0c;FPGA VI 是否会自动运行。 具体作用&#xff1a; 勾选 “Run the FPGA VI”&#xff1a; 当主机 VI 执行时&#xff0c;如果 FPGA VI 没有正在运行&#xff0c;系统将自动启动并运行该 FPGA VI。 这可以确保 FPG…

使用Hugging Face中的BERT进行标题分类

使用Hugging Face中的BERT进行标题分类 前言相关介绍出处基本原理优点缺点 前提条件实验环境BERT进行标题分类准备数据集读取数据集划分数据集设置相关参数创建自己DataSet对象计算准确率定义预训练模型定义优化器训练模型保存模型测试模型 参考文献 前言 由于本人水平有限&…

视频文案提取

视频文案提取 通义听悟 &#x1f3c6;优点 自动提取音视频关键词、总结、提炼视频大纲、中英双字幕可以识别不同声音进行文案区分&#xff0c;还支持直接AI改写提取的文案旁边还有AI助手帮助你回答问题和对知识举一反三相关视频介绍&#x1f449;原地封神&#xff01;录音、…

拆解学习【反激-PD-氮化镓】(一)

小米67W桌面快充插座&#xff1a; 反激基本拓扑&#xff1a; 商用场景下&#xff0c;这个拓扑进行了如下优化&#xff1a; 1.Q22换成了氮化镓开关管&#xff0c;当然需要适配的能驱动氮化镓的控制芯片 2.D21二极管换成了MOS管。 3.由于是AC220V输入&#xff0c;设计了整流桥…

在Centos中安装、配置与使用atop监控工具

目录 前言1. atop工具的安装1.1 atop简介1.2 atop的安装步骤 2. 安装并配置netatop模块2.1 安装内核开发包2.2 安装所需依赖2.3 下载netatop2.4 解压并安装netatop2.5 启动netatop 3. atop的配置与使用3.1 配置监控周期与日志保留时间3.2 设置定时任务生成日志3.3 启动与查看at…

鸿蒙开发之ArkUI 界面篇 三十四 容器组件Tabs 自定义TabBar

如果需要修改Tabs的图标和文字之间的距离我们该怎么办呢&#xff1f;好在tabBar是联合类型&#xff0c;提供了自定义tabBar&#xff0c;这里就可以显示特殊图标或者是文字图片&#xff0c;如下图&#xff1a; 这里定义了myBuilder的函数&#xff0c;用了 来修饰&#xff0c;没有…

联合查询(详细篇)

实际开发中往往数据来自不同的表 所以需要多表联合查询 多表查询是对多张表的数据取笛卡尔积 笛卡尔积 什么是笛卡尔积呢&#xff1f; 简单来说 笛卡尔积是两个表的乘积 结果集中的每一行都是第一个表的每一行与第二个表的每一行的组合 简单理解&#xff1a; 假设有两个表…

复位电路的亚稳态

复位导致亚稳态的概念&#xff1a; 同步电路中&#xff0c;输入数据需要与时钟满足setup time和hold time才能进行数据的正常传输&#xff08;数据在这个时间段内必须保持不变&#xff1a;1不能变为0&#xff0c;0也不能变为1&#xff09;&#xff0c;防止亚稳态&#xff1b; …

FPGA实现PCIE采集电脑端视频缩放后转千兆UDP网络输出,基于XDMA+PHY芯片架构,提供3套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐我已有的PCIE方案我这里已有的以太网方案本博已有的FPGA图像缩放方案 3、PCIE基础知识扫描4、工程详细设计方案工程设计原理框图电脑端视频PCIE视频采集QT上位机XDMA配置及使用XDMA中断模块FDMA图像缓存纯Verilog图像缩放模块详解…

前端接口报500如何解决 | 发生的原因以及处理步骤

接口500&#xff0c;通常指的是服务器内部错误&#xff08;Internal Server Error&#xff09;&#xff0c;是HTTP协议中的一个标准状态码。当服务器遇到无法处理的错误时&#xff0c;会返回这个状态码。这种错误可能涉及到服务器配置、服务器上的应用程序、服务器资源、数据库…

【畅捷通-注册安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 暴力破解密码&#xff0c;造成用户信息泄露短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造成亏损无底洞…

图说谭教授的“Δy=dy”是误人子弟的概念性错误。

黄小宁 可建立如图所示的局部坐标系。图中曲线Δydy余项不是关于dx的一次函数&#xff0c;而切线dyydx是关于dx的一次函数。草图形象直观地显示曲线Δy不切线dy。 所以谭教授书中的“Δydy余项dy”是误人子弟的概念性错误。数学家王元说&#xff1a;搞错概念脑子会变成一团浆糊…

离岗睡岗预警系统 值班室离岗识别系统Python 结合 OpenCV 库

在众多工作场景中&#xff0c;存在着一些特殊岗位&#xff0c;这些岗位对于人员的专注度和警觉性有着极高的要求。然而&#xff0c;离岗睡岗现象却时有发生&#xff0c;给工作的正常开展和安全保障带来了严重的威胁。本文将深入探讨特殊岗位离岗睡岗的危害&#xff0c;以及如何…

解决方案:AttributeError: Can only use .str accessor with string values!

文章目录 一、现象二、解决方案 一、现象 最近在用Pandas库处理日期数据的时候&#xff0c;有时候想截取后两个数字&#xff0c;却截取不了&#xff0c;时间久了&#xff0c;会有些遗忘&#xff0c;去找大模型提问找答案&#xff0c;于是做个笔记记录&#xff0c;帮助后面遇见…

docker,docker-desktop,docker-compose download

docker docker-compose download 百度网盘获取离线包链接release-notes 参考dockerdocker-composewlspowershell

程序猿成长之路之设计模式篇——创建型设计模式——抽象工厂模式

设计模式开篇之作&#xff0c;简单介绍一下抽象工厂设计模式 前言 试想一下&#xff0c;国内有两个工厂&#xff0c;工厂1和工厂2&#xff0c;这两个不同牌子的工厂生产同样类型的商品&#xff0c;但是商品的价格和数量不一致&#xff0c;这时候我们要对其进行设计&#xff0c…

Centos基线自动化检查脚本

此脚本是一个用于检查Linux系统安全配置的Bash脚本。它通过多项安全标准对系统进行评估&#xff0c;主要检查以下内容&#xff1a; IP地址获取&#xff1a;脚本首先获取主机的IP地址&#xff0c;确保其以10.115开头。 密码策略检查&#xff1a; 检查最小密码长度&#xff08;P…

解析 wxPython 和 Pandas 实现的 XLSX 分析器和网页打开器

在本文中&#xff0c;我们将分析一个使用 wxPython 和 Pandas 库编写的 Python 应用程序&#xff0c;名为 “XLSX Analyzer and Web Opener”。该应用程序的核心功能是&#xff1a;从 Excel 文件中读取数据并显示在网格中&#xff0c;此外&#xff0c;还允许用户使用 Google Ch…