当前位置:首页 > JavaScript

js实现扇形

2026-04-06 04:13:28JavaScript

使用Canvas绘制扇形

在HTML5 Canvas中,可以通过arc()方法绘制扇形。以下是一个完整的示例代码:

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

  // 定义圆心和半径
  const centerX = canvas.width / 2;
  const centerY = canvas.height / 2;
  const radius = 80;

  // 开始绘制
  ctx.beginPath();
  ctx.moveTo(centerX, centerY);  // 移动到圆心
  ctx.arc(centerX, centerY, radius, 0, Math.PI / 2);  // 绘制90度扇形
  ctx.closePath();  // 闭合路径

  // 设置样式
  ctx.fillStyle = 'rgba(255, 0, 0, 0.5)';
  ctx.fill();
</script>

使用SVG绘制扇形

SVG提供了更简单的矢量图形绘制方式:

js实现扇形

<svg width="200" height="200">
  <path d="M100,100 L180,100 A80,80 0 0,1 100,180 Z" fill="blue" />
</svg>

解释SVG路径命令:

  • M100,100:移动到圆心(100,100)
  • L180,100:画线到起始点(180,100)
  • A80,80 0 0,1 100,180:绘制圆弧到(100,180)
  • Z:闭合路径

使用CSS绘制扇形

纯CSS可以通过边框和旋转实现扇形效果:

js实现扇形

<div class="fan"></div>
<style>
  .fan {
    width: 0;
    height: 0;
    border: 100px solid transparent;
    border-top: 100px solid red;
    border-radius: 100px;
    transform: rotate(45deg);
  }
</style>

动态生成扇形

以下函数可以生成任意角度和半径的扇形:

function drawSector(ctx, x, y, radius, startAngle, endAngle, color) {
  ctx.beginPath();
  ctx.moveTo(x, y);
  ctx.arc(x, y, radius, startAngle, endAngle);
  ctx.closePath();
  ctx.fillStyle = color;
  ctx.fill();
}

// 使用示例
const canvas = document.createElement('canvas');
document.body.appendChild(canvas);
const ctx = canvas.getContext('2d');
drawSector(ctx, 100, 100, 80, 0, Math.PI/3, 'green');

动画扇形效果

结合requestAnimationFrame实现动画效果:

let angle = 0;
function animate() {
  const ctx = document.getElementById('canvas').getContext('2d');
  ctx.clearRect(0, 0, 200, 200);

  ctx.beginPath();
  ctx.moveTo(100, 100);
  ctx.arc(100, 100, 80, 0, angle);
  ctx.closePath();
  ctx.fillStyle = 'orange';
  ctx.fill();

  angle += 0.01;
  if(angle < Math.PI*2) {
    requestAnimationFrame(animate);
  }
}
animate();

标签: 扇形js
分享给朋友:

相关文章

vue实现js休眠

vue实现js休眠

实现 JavaScript 休眠的方法 在 Vue 中实现 JavaScript 休眠(延迟执行)可以通过以下方式实现。由于 JavaScript 本身没有内置的 sleep 函数,通常使用 Prom…

js实现 功能

js实现 功能

在 JavaScript 中实现功能通常涉及多个关键步骤,具体取决于功能需求。以下是常见功能的实现方法和示例: 基本功能实现 使用函数封装逻辑是最直接的方式。例如,实现一个计算两数之和的函数: f…

js图片上传实现

js图片上传实现

图片上传的基本实现 使用HTML的<input type="file">元素配合JavaScript的File API实现基础图片上传功能。HTML部分需要设置accept="image/…

js实现图片滚动

js实现图片滚动

图片滚动的实现方法 使用CSS动画实现 通过CSS的animation和@keyframes可以实现简单的图片滚动效果。这种方法适合静态图片的无缝循环滚动。 <style> .scr…

js实现导航菜单

js实现导航菜单

使用HTML和CSS创建基础结构 导航菜单的基础结构通常由HTML的无序列表(<ul>)和列表项(<li>)组成,每个列表项包含一个链接(<a>)。CSS用于样式化…

js实现乘法

js实现乘法

实现乘法运算的方法 在JavaScript中实现乘法运算可以通过多种方式完成,以下列举几种常见方法: 基础运算符 直接使用乘法运算符*是最简单的方式: let result = 3 * 5; //…