当前位置:首页 > JavaScript

js实现canvas

2026-02-01 20:21:20JavaScript

Canvas 基础使用

在 JavaScript 中使用 Canvas 需要先获取画布元素并设置其上下文。以下是基本步骤:

// 获取 canvas 元素
const canvas = document.getElementById('myCanvas');
// 获取 2D 渲染上下文
const ctx = canvas.getContext('2d');

绘制简单图形

Canvas 提供了多种绘制图形的方法:

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

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

绘制路径

路径绘制需要先定义路径,再填充或描边:

ctx.beginPath();
ctx.moveTo(50, 50);
ctx.lineTo(150, 50);
ctx.lineTo(100, 150);
ctx.closePath();
ctx.strokeStyle = 'green';
ctx.stroke();

文本绘制

Canvas 支持文本渲染功能:

ctx.font = '30px Arial';
ctx.fillStyle = 'black';
ctx.fillText('Hello Canvas', 50, 200);

图像处理

可以在 Canvas 上绘制图像:

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

动画实现

通过 requestAnimationFrame 可以实现动画效果:

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

事件处理

可以为 Canvas 添加交互事件:

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

性能优化

对于复杂 Canvas 应用,需要注意性能优化:

  • 尽量减少不必要的绘制操作
  • 使用离屏 Canvas 进行预渲染
  • 合理使用 requestAnimationFrame
  • 避免频繁的 Canvas 状态改变

高级特性

Canvas 还支持更高级的功能:

// 渐变
const gradient = ctx.createLinearGradient(0, 0, 200, 0);
gradient.addColorStop(0, 'red');
gradient.addColorStop(1, 'blue');
ctx.fillStyle = gradient;
ctx.fillRect(10, 10, 200, 100);

// 阴影
ctx.shadowColor = 'gray';
ctx.shadowBlur = 10;
ctx.shadowOffsetX = 5;
ctx.shadowOffsetY = 5;
ctx.fillRect(50, 50, 100, 100);

清除画布

清除画布内容的方法:

// 清除整个画布
ctx.clearRect(0, 0, canvas.width, canvas.height);

// 部分清除
ctx.clearRect(50, 50, 100, 100);

js实现canvas

标签: jscanvas
分享给朋友:

相关文章

jquery.js

jquery.js

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它的设计宗旨是“Write Less, Do Mor…

js实现跳转

js实现跳转

使用 window.location 跳转 通过修改 window.location.href 实现页面跳转,这是最常用的方法。 window.location.href = 'https://…

js实现轮播图

js实现轮播图

基础轮播图实现 使用HTML、CSS和JavaScript实现一个简单的自动轮播图。HTML结构包含一个容器和多个图片项。 <div class="slider"> <div…

js实现计算器

js实现计算器

实现基础计算器功能 使用JavaScript创建一个基础计算器需要处理数字输入、运算符逻辑和结果显示。以下是一个简单的实现示例: let currentInput = '0'; let previo…

js实现验证码

js实现验证码

使用Canvas生成图形验证码 在HTML中创建一个Canvas元素用于绘制验证码。通过JavaScript随机生成数字或字母组合,并添加干扰线、噪点等干扰元素增强安全性。 <canvas…

js实现文件下载

js实现文件下载

使用 a 标签下载文件 通过动态创建 a 标签并设置 download 属性实现文件下载。适用于已知文件 URL 或 Blob 数据的情况。 function downloadFile(url, f…