当前位置:首页 > JavaScript

js实现绘图

2026-04-05 11:10:34JavaScript

使用Canvas API绘制图形

Canvas API是HTML5提供的绘图工具,通过JavaScript操作<canvas>元素实现动态绘图。基本步骤如下:

  1. 在HTML中添加<canvas>元素

    <canvas id="myCanvas" width="500" height="500"></canvas>
  2. 获取Canvas上下文并绘制图形

    
    const canvas = document.getElementById('myCanvas');
    const ctx = canvas.getContext('2d');

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

js实现绘图

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


### 使用SVG实现矢量绘图

SVG是基于XML的矢量图形格式,可以通过JavaScript动态创建和修改:

```javascript
// 创建SVG元素
const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
svg.setAttribute("width", "500");
svg.setAttribute("height", "500");
document.body.appendChild(svg);

// 添加圆形
const circle = document.createElementNS("http://www.w3.org/2000/svg", "circle");
circle.setAttribute("cx", "100");
circle.setAttribute("cy", "100");
circle.setAttribute("r", "50");
circle.setAttribute("fill", "green");
svg.appendChild(circle);

使用第三方库绘制图表

对于复杂图表,推荐使用成熟的JavaScript库:

  1. Chart.js - 简单易用的图表库

    js实现绘图

    new Chart(document.getElementById('chart'), {
     type: 'bar',
     data: {
         labels: ['A', 'B', 'C'],
         datasets: [{
             label: '数据集',
             data: [10, 20, 30]
         }]
     }
    });
  2. D3.js - 强大的数据可视化库

    d3.select("body")
     .selectAll("div")
     .data([4, 8, 15, 16, 23, 42])
     .enter()
     .append("div")
     .style("height", d => d * 10 + "px");

实现动画效果

通过requestAnimationFrame实现平滑动画:

function animate() {
    const canvas = document.getElementById('myCanvas');
    const ctx = canvas.getContext('2d');

    ctx.clearRect(0, 0, canvas.width, canvas.height);

    // 更新位置
    x += dx;
    y += dy;

    // 绘制
    ctx.beginPath();
    ctx.arc(x, y, 20, 0, Math.PI*2);
    ctx.fillStyle = 'orange';
    ctx.fill();

    requestAnimationFrame(animate);
}

let x = 50, y = 50, dx = 2, dy = 1;
animate();

响应式绘图处理

确保绘图在不同屏幕尺寸下正常显示:

function resizeCanvas() {
    const canvas = document.getElementById('myCanvas');
    canvas.width = window.innerWidth;
    canvas.height = window.innerHeight;
    // 重绘内容
    drawContent();
}

window.addEventListener('resize', resizeCanvas);
resizeCanvas();

标签: js
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

Vue 中实现 JavaScript 休眠 在 Vue 中实现 JavaScript 休眠通常需要使用异步方式,以避免阻塞主线程。以下是几种常见方法: 使用 setTimeout 和 Pro…

js 实现倒计时

js 实现倒计时

实现倒计时的基本方法 使用 JavaScript 实现倒计时可以通过 setInterval 或 setTimeout 结合日期计算来完成。以下是两种常见实现方式。 使用 setInterval 实…

js实现日历

js实现日历

实现日历的基本思路 使用JavaScript实现日历的核心是动态生成日期表格,并处理月份切换逻辑。需要计算当前月的天数、起始星期几,并动态渲染到页面上。 获取当前日期信息 通过Date对象获取当前年…

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js 实现链表

js 实现链表

链表的基本概念 链表是一种线性数据结构,由一系列节点组成,每个节点包含数据和指向下一个节点的指针。与数组不同,链表在内存中是非连续存储的,插入和删除操作效率较高。 链表的实现 在 JavaScrip…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…