当前位置:首页 > 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支持文本渲染,可设置字体、对齐方式和填充颜色。

js  实现画布

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实现动画效果,需在每一帧清除画布并重绘。

js  实现画布

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内容可导出为图像数据或文件。

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

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

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

相关文章

js实现vue路由

js实现vue路由

Vue路由基础实现 使用Vue Router实现前端路由需要先安装并配置路由库。Vue Router是Vue.js官方的路由管理器。 安装Vue Router: npm install vue…

vue.js实现轮播

vue.js实现轮播

Vue.js 实现轮播功能 使用第三方库(推荐) Vue.js 生态中有许多成熟的轮播组件库,例如 vue-awesome-swiper 或 swiper,它们功能丰富且易于集成。 安装 swip…

js实现轮播图

js实现轮播图

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

js 实现vue

js 实现vue

Vue.js 的基本实现 在 JavaScript 中实现 Vue.js 的核心功能,可以通过数据绑定、响应式系统和虚拟 DOM 来实现。以下是实现 Vue.js 核心功能的简化版本。 数据响应式系…

js防抖和节流实现

js防抖和节流实现

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

js 实现分页

js 实现分页

实现分页的基本逻辑 分页功能通常需要后端返回数据总量或总页数,前端根据当前页码和每页条数截取对应数据。以下是一个基于JavaScript的简单分页实现方案: 前端分页实现 假设已有从后端获取的完整…