当前位置:首页 > JavaScript

js实现canvas

2026-03-14 19:34:21JavaScript

使用Canvas绘制基本图形

在HTML中创建Canvas元素并设置宽度和高度,通过JavaScript获取Canvas上下文进行绘制。

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

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

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

绘制路径和线条

使用路径API可以绘制复杂的线条和形状,通过moveTolineTo定义路径。

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

添加文本和样式

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

ctx.font = '30px Arial';
ctx.fillStyle = 'purple';
ctx.textAlign = 'center';
ctx.fillText('Hello Canvas', canvas.width / 2, 50);

图像绘制和操作

Canvas可以加载并绘制图像,支持缩放和裁剪。

const img = new Image();
img.src = 'image.png';
img.onload = () => {
  ctx.drawImage(img, 0, 0, 200, 200);
};

动画实现

使用requestAnimationFrame实现平滑动画,通过清除和重绘Canvas实现动态效果。

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

事件交互处理

监听鼠标或触摸事件,实现Canvas的交互功能。

canvas.addEventListener('click', (e) => {
  const rect = canvas.getBoundingClientRect();
  const x = e.clientX - rect.left;
  const y = e.clientY - rect.top;
  ctx.fillRect(x - 25, y - 25, 50, 50);
});

高级效果和滤镜

通过像素操作实现灰度、反色等滤镜效果。

const imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
const data = imageData.data;
for (let i = 0; i < data.length; i += 4) {
  const avg = (data[i] + data[i + 1] + data[i + 2]) / 3;
  data[i] = avg;
  data[i + 1] = avg;
  data[i + 2] = avg;
}
ctx.putImageData(imageData, 0, 0);

性能优化技巧

避免频繁的Canvas状态改变,使用离屏Canvas预渲染复杂图形。

js实现canvas

const offscreenCanvas = document.createElement('canvas');
const offscreenCtx = offscreenCanvas.getContext('2d');
offscreenCtx.fillRect(0, 0, 100, 100);
ctx.drawImage(offscreenCanvas, 0, 0);

标签: jscanvas
分享给朋友:

相关文章

js实现拖拽

js实现拖拽

实现拖拽的基本步骤 使用JavaScript实现拖拽功能需要监听鼠标事件,包括mousedown、mousemove和mouseup。以下是实现的基本逻辑: const draggableEleme…

vue实现canvas切换

vue实现canvas切换

在Vue中实现Canvas切换 准备工作 确保项目中已安装Vue,创建一个新的Vue组件或使用现有组件。Canvas切换通常涉及动态渲染不同的图形或场景。 创建Canvas元素 在Vue组件的模板中…

js实现密码

js实现密码

密码强度验证 使用正则表达式验证密码强度是一种常见方法。以下代码检查密码是否包含大小写字母、数字和特殊字符,且长度至少为8位: function checkPasswordStrength(pass…

js怎么实现异步

js怎么实现异步

异步实现方法 JavaScript中实现异步操作主要通过以下几种方式: Promise Promise是ES6引入的异步解决方案,用于处理异步操作的成功或失败状态。 const promise =…

js实现代码雨

js实现代码雨

实现代码雨效果 使用HTML5 Canvas和JavaScript可以轻松实现经典的代码雨效果。以下是完整的实现代码和说明: HTML结构 <!DOCTYPE html> <htm…

js实现下拉菜单

js实现下拉菜单

使用HTML和CSS创建基础结构 HTML部分需要包含一个触发下拉的按钮和隐藏的下拉菜单内容: <div class="dropdown"> <button class="dr…