当前位置:首页 > JavaScript

js实现画圆

2026-03-15 02:49:31JavaScript

使用 Canvas API 绘制圆形

Canvas API 是 HTML5 提供的绘图工具,通过 JavaScript 调用其方法实现图形绘制。以下是绘制圆形的基本代码示例:

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

ctx.beginPath();
ctx.arc(100, 100, 50, 0, Math.PI * 2); // x坐标, y坐标, 半径, 起始角, 结束角
ctx.fillStyle = 'red';
ctx.fill();
ctx.closePath();

使用 SVG 动态创建圆形

SVG 是矢量图形标准,可通过 DOM 操作动态生成圆形元素:

const svg = document.createElementNS("http://www.w3.org/2000/svg", "svg");
svg.setAttribute("width", "200");
svg.setAttribute("height", "200");

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", "blue");

svg.appendChild(circle);
document.body.appendChild(svg);

使用 CSS 绘制圆形

通过 CSS 的 border-radius 属性可以实现纯前端圆形绘制:

const div = document.createElement('div');
div.style.width = '100px';
div.style.height = '100px';
div.style.borderRadius = '50%';
div.style.backgroundColor = 'green';
document.body.appendChild(div);

使用 WebGL 绘制圆形

对于高性能图形需求,可以使用 WebGL 进行绘制:

const canvas = document.getElementById('glCanvas');
const gl = canvas.getContext('webgl');

// 顶点着色器
const vsSource = `
  attribute vec2 position;
  void main() {
    gl_Position = vec4(position, 0.0, 1.0);
  }`;

// 片段着色器
const fsSource = `
  precision mediump float;
  void main() {
    gl_FragColor = vec4(1.0, 0.0, 0.0, 1.0);
  }`;

// 创建着色器程序
const shaderProgram = initShaderProgram(gl, vsSource, fsSource);
const positions = [];
for (let i = 0; i < 360; i++) {
  const angle = (i * Math.PI) / 180;
  positions.push(Math.cos(angle) * 0.5, Math.sin(angle) * 0.5);
}

// 创建缓冲区并绘制
const positionBuffer = gl.createBuffer();
gl.bindBuffer(gl.ARRAY_BUFFER, positionBuffer);
gl.bufferData(gl.ARRAY_BUFFER, new Float32Array(positions), gl.STATIC_DRAW);
gl.drawArrays(gl.TRIANGLE_FAN, 0, positions.length / 2);

使用 D3.js 绘制圆形

数据可视化库 D3.js 提供便捷的圆形绘制方法:

js实现画圆

import * as d3 from 'd3';

const svg = d3.select("body").append("svg")
  .attr("width", 200)
  .attr("height", 200);

svg.append("circle")
  .attr("cx", 100)
  .attr("cy", 100)
  .attr("r", 50)
  .style("fill", "purple");

每种方法适用于不同场景:Canvas 适合动态绘图,SVG 适合可缩放图形,CSS 最简单,WebGL 适合复杂3D图形,D3.js 适合数据可视化。根据项目需求选择合适的技术方案。

标签: js
分享给朋友:

相关文章

js实现拷贝

js实现拷贝

实现文本拷贝 使用 document.execCommand 方法(已废弃但兼容性较好): function copyText(text) { const textarea = document…

js实现换肤

js实现换肤

使用CSS变量实现换肤 通过CSS变量可以轻松实现主题切换功能。CSS变量在根元素中定义,通过JavaScript动态修改这些变量值。 :root { --primary-color: #349…

js实现瀑布流

js实现瀑布流

实现瀑布流布局 瀑布流布局是一种常见的网页布局方式,常用于图片展示、商品列表等场景。以下是使用 JavaScript 实现瀑布流布局的几种方法。 纯 JavaScript 实现 通过计算元素的位置和…

js实现下拉菜单

js实现下拉菜单

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

js实现弹框

js实现弹框

使用 alert 实现简单弹框 JavaScript 的 alert 方法可以直接显示一个简单的弹框,内容为纯文本: alert("这是一个简单的弹框"); 使用 confirm 实现确认弹框…

js实现文件夹

js实现文件夹

使用JavaScript创建文件夹 在浏览器端的JavaScript中无法直接操作文件系统创建文件夹,这是出于安全考虑。但在Node.js环境中可以通过文件系统模块(fs)实现。 Node.js中使…