当前位置: 首页 > java >正文

Canvas入门教程!!【前端】

目录

  • canvas是什么?
  • 使用场景:
  • canvas使用:
    • 引入:
    • 获取2D的上下文:
    • 坐标轴:
  • 绘制:
    • beginPath() :
    • moveTo() :
    • lineTo():
    • stroke():
    • fillRect() :
    • strokeStyle 属性:
    • fillStyle 属性:
  • 画一条线:
  • 画一个简单的矩形:
  • 绘制一个圆形:

canvas是什么?

<canvas> 是 HTML5 中引入的一个元素,用于通过 JavaScript 绘制图形。它提供了一种在网页上动态生成图像、动画和图形的方法<canvas> 本身只是一个容器,所有的绘图操作都需要通过 JavaScript 来实现。

使用场景:

  • 动态图形和动画:用于创建游戏、动画和其他动态效果。
  • 数据可视化:绘制图表、图形和其他数据可视化内容。
  • 图像处理:可以对图像进行像素级的操作。
  • 图形编辑器:开发在线绘图工具和图像编辑器。

canvas使用:

引入:

<canvas id="canvas"> 当前浏览器不支持canvas元素,请升级或更换浏览器!</canvas>

内部的内容是不支持canvas的浏览器会显示的内容…(我就不说是啥浏览器了hhh)

获取2D的上下文:

两种方式:

let canvas = document.getElementById('canvas');
let ctx = canvas.getContext("2d");

或者根据以下代码进行判断浏览器的支持性:(对不支持的进行处理)

if (canvas.getContext) {// 正常逻辑
} else {// 不支持的兼容处理
}

坐标轴:

一般画布根据坐标轴进行判断我们在哪落笔。左上角为原点,向左向右延伸形成x,y轴。
在这里插入图片描述
上图在网上截取 侵权联系删除。

绘制:

beginPath() :

Canvas 2D API 的 CanvasRenderingContext2D.beginPath() 方法用于通过清空子路径列表开始一个新路径。当你想创建一个新的路径时,调用此方法。
beginPath() 方法在开始每条线之前调用,就是开始画的时候调用。

moveTo() :

Canvas 2D API 的 CanvasRenderingContext2D.moveTo() 方法用于在给定的 (x,y) 坐标处开始一个新的子路径。

moveTo(x, y)

从这个点开始画的意思。

lineTo():

Canvas 2D API 的 CanvasRenderingContext2D 接口的 lineTo() 方法将当前子路径的最后一个点与指定的 (x, y) 坐标用直线段相连,从而将一个直线段添加到当前子路径中。

lineTo(x, y)

在这个坐标结束绘画的意思。

stroke():

Canvas 2D API 的 CanvasRenderingContext2D.stroke() 方法用于根据当前的描边样式,绘制当前或指定的路径。

stroke()
stroke(path)

让画的东西在画布上有个印子,让我们看到这个东西。

fillRect() :

Canvas 2D API 的 CanvasRenderingContext2D.fillRect() 方法用于绘制一个矩形,并根据当前的 fillStyle 进行填充。
这个方法是直接在画布上绘制填充,并不修改当前路径,所以在这个方法后面调用 fill() 或者 stroke() 方法并不会对这个方法有什么影响。

fillRect(x, y, width, height)

strokeStyle 属性:

Canvas 2D API 的 CanvasRenderingContext2D.strokeStyle 属性指定用于形状描边(轮廓)的颜色、渐变或图案。默认值是 #000(黑色)。
设置绘制的颜色为蓝色:

ctx.strokeStyle = "blue";

fillStyle 属性:

Canvas 2D API 的 CanvasRenderingContext2D.fillStyle 属性指定用于形状内部的颜色、渐变或图案。默认样式为 #000(黑色)。

设置内部为蓝色:

ctx.fillStyle = "blue";

画一条线:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Canvas Line</title>
</head>
<body><canvas id="myCanvas" width="200" height="200" style="border:1px solid #000000;"></canvas><script>let canvas = document.getElementById('myCanvas');let context = canvas.getContext('2d');// 绘制一条线context.beginPath();context.moveTo(0, 0); // 起点context.lineTo(200, 200); // 终点context.strokeStyle = 'green';context.stroke();</script>
</body>
</html>

在这里插入图片描述

画一个简单的矩形:

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Canvas Example</title>
</head>
<body><canvas id="myCanvas" width="200" height="200" style="border:1px solid #000000;"></canvas><script>let canvas = document.getElementById('myCanvas');let context = canvas.getContext('2d');// 绘制一个填充的矩形context.fillStyle = 'red';context.fillRect(50, 50, 100, 100);</script>
</body>
</html>

在这里插入图片描述

绘制一个圆形:

<!DOCTYPE html>
<html lang="en"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"><title>Canvas Circle</title>
</head><body><canvas id="myCanvas" width="200" height="200" style="border:1px solid #000000;"></canvas><script>let canvas = document.getElementById('myCanvas');let context = canvas.getContext('2d');// 绘制一个圆形context.beginPath();context.arc(100, 100, 50, 0, 2 * Math.PI); // 圆心(100, 100),半径50context.fillStyle = 'blue';context.fill();</script>
</body></html>

在这里插入图片描述

http://www.xdnf.cn/news/1008.html

相关文章:

  • 2025年教师资格证笔试考试核心内容
  • 【Linux】客户端 connect 断线重连
  • 知擎世纪:大模型时代知识库的正确建立法则
  • 信创项目管理系统实施难点,5大应对策略
  • lvgl 布局管理
  • ECA 注意力机制:让你的卷积神经网络更上一层楼
  • 考研系列-计算机网络-第四章、网络层
  • Java第五节:继承thread类创建线程
  • 算法之分而治之
  • AI模型开发平台功能特色
  • 动态LOD策略细节层级控制:根据视角距离动态简化远距量子态渲染
  • 算法-策略(递归,二叉搜索)
  • Day-1 漏洞攻击实战
  • 74.搜索二维矩阵
  • Easysearch Rollup 相比 OpenSearch Rollup 的优势分析
  • MH2103系列coremark1.0跑分数据和优化,及基于arm2d的优化应用
  • 【c语言】深度理解指针4——sizeof和strlen
  • 你学会了些什么220120?--网页性能指标检测
  • docker数据目录迁移步骤
  • CopyOnWriteArrayList核心源码解析
  • 历史榜单的存储策略
  • 【系统架构设计师】信息安全的概念
  • Linux之信号
  • 【DataScript】标准数据格式化-国民经济行业分类(GB/T 4754-2017)
  • NLP高频面试题(四十八)大语言模型中的思维链(CoT)技术详解
  • Kafka 详细解读
  • 合同管理Contract Management
  • PowerBI工具提示-将表悬浮在数据上方
  • 【英语语法】词法---数词
  • 服务器数据迁移指南