当前位置:首页 > JavaScript

js 实现画布

2026-01-31 18:57:47JavaScript

使用Canvas绘制基本图形

在HTML中创建Canvas元素需要定义宽度和高度,通过JavaScript获取Canvas上下文进行绘制。

<canvas id="myCanvas" width="500" height="500"></canvas>
const canvas = document.getElementById('myCanvas');
const ctx = canvas.getContext('2d');

// 绘制矩形
ctx.fillStyle = 'blue';
ctx.fillRect(50, 50, 100, 100);

// 绘制圆形
ctx.beginPath();
ctx.arc(200, 200, 50, 0, Math.PI * 2);
ctx.fillStyle = 'red';
ctx.fill();

绘制路径与线条

路径绘制需要调用beginPath()开始,通过moveTo()lineTo()定义路径。

ctx.beginPath();
ctx.moveTo(300, 100);
ctx.lineTo(400, 200);
ctx.lineTo(300, 200);
ctx.closePath();
ctx.strokeStyle = 'green';
ctx.stroke();

添加文本与样式

Canvas支持文本渲染,可设置字体、对齐方式和填充颜色。

ctx.font = '30px Arial';
ctx.fillStyle = 'purple';
ctx.textAlign = 'center';
ctx.fillText('Hello Canvas', 250, 400);

图像绘制与操作

通过drawImage()方法可将图像绘制到Canvas上,支持缩放和裁剪。

const img = new Image();
img.src = 'example.png';
img.onload = function() {
  ctx.drawImage(img, 100, 300, 100, 100);
};

动画实现

使用requestAnimationFrame实现动画效果,需在每一帧清除画布并重绘。

let x = 0;
function animate() {
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.fillRect(x, 50, 50, 50);
  x += 2;
  if (x < canvas.width) {
    requestAnimationFrame(animate);
  }
}
animate();

事件交互处理

通过监听鼠标事件实现交互式绘图。

canvas.addEventListener('mousemove', function(e) {
  const rect = canvas.getBoundingClientRect();
  const x = e.clientX - rect.left;
  const y = e.clientY - rect.top;
  ctx.clearRect(0, 0, canvas.width, canvas.height);
  ctx.fillRect(x - 25, y - 25, 50, 50);
});

保存Canvas内容

Canvas内容可导出为图像数据或文件。

js  实现画布

// 获取图像数据URL
const dataURL = canvas.toDataURL('image/png');

// 触发下载
const link = document.createElement('a');
link.download = 'canvas-image.png';
link.href = dataURL;
link.click();

标签: 画布js
分享给朋友:

相关文章

js如何实现继承

js如何实现继承

原型链继承 通过将子类的原型指向父类的实例实现继承。子类实例能够访问父类原型上的属性和方法。 function Parent() { this.name = 'parent'; } Parent…

js实现vr

js实现vr

使用WebXR API实现VR体验 WebXR是浏览器中实现VR和AR体验的标准API,它取代了早期的WebVR。现代浏览器如Chrome、Edge和Firefox已支持WebXR。 // 初始化W…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js实现防洪

js实现防洪

防抖(Debounce)实现 防抖的核心思想是在事件触发后延迟执行回调函数,若在延迟时间内再次触发事件,则重新计时。适用于输入框搜索、窗口调整等场景。 function debounce(func,…

js实现交换

js实现交换

交换变量的方法 在JavaScript中,交换两个变量的值有多种方法。以下是常见的几种实现方式: 使用临时变量 通过引入一个临时变量来存储其中一个变量的值,实现交换: let a = 1; le…

js实现吸色

js实现吸色

使用Canvas实现吸色功能 通过Canvas的getImageData方法获取像素颜色数据。创建一个Canvas元素,将目标图像绘制到Canvas上,通过鼠标事件获取坐标对应的颜色值。 const…