当前位置:首页 > 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
分享给朋友:

相关文章

js实现复制

js实现复制

使用document.execCommand方法 在较旧的浏览器中,可以使用document.execCommand('copy')实现复制功能。创建一个临时的textarea或input元素,将需要…

js实现验证码

js实现验证码

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

js实现图

js实现图

JavaScript 实现图的常用方法 在 JavaScript 中,图(Graph)可以通过多种方式实现,常见的包括邻接表(Adjacency List)和邻接矩阵(Adjacency Matrix…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js实现显示隐藏

js实现显示隐藏

显示隐藏的实现方法 在JavaScript中,实现元素的显示和隐藏可以通过多种方式完成。以下是几种常见的方法: 修改CSS的display属性 通过改变元素的display属性可以在none(隐藏)…