美文网首页Web前端之路
简单记录 Canvas 中绘制椭圆形

简单记录 Canvas 中绘制椭圆形

作者: 虚拟J | 来源:发表于2020-11-16 22:34 被阅读0次

虽然可以直接用 CanvasRenderingContext2D.ellipse() (Canvas 2D API 添加椭圆路径的方法) 方法去绘制。但因为考虑到浏览器兼容性的问题,所以还需要有个备选方案。

Canvas中绘制椭圆的方法有压缩法,计算法,贝塞尔曲线法等多种方式,下面代码中用的是最简单的压缩法。

import { useEffect, useRef } from 'react';

export default function GroupCanvas() {
  const ref = useRef(null);

  useEffect(() => {
    if (!ref.current.getContext) return;

    let ctx = ref.current.getContext('2d');
    ctx.strokeStyle = '#289FD9';
    ctx.lineWidth = 1;
    ellipse(75, 120, 37, 25, 0, 0, Math.PI * 2);

    function ellipse(
      x,
      y,
      radiusX,
      radiusY,
      rotation,
      startAngle,
      endAngle,
      anticlockwise,
    ) {
      ctx.beginPath();
      if (ctx.ellipse) {
        ctx.ellipse(x, y, radiusX, radiusY, rotation, startAngle, endAngle, anticlockwise);
      } else {
        let r = radiusX > radiusY ? radiusX : radiusY; //用大的数为半径
        let scaleX = radiusX / r; //计算缩放的x轴比例
        let scaleY = radiusY / r; //计算缩放的y轴比例
        ctx.save(); //保存当前环境的状态。
        ctx.translate(x, y); //移动到圆心位置
        ctx.rotate(rotation); //进行旋转
        ctx.scale(scaleX, scaleY); //进行缩放
        ctx.arc(0, 0, r, startAngle, endAngle, anticlockwise); //绘制圆形
        ctx.restore(); //返回之前保存过的路径状态和属性。
      }
      ctx.stroke();
    }
  }, []);
  return <canvas ref={ref}></canvas>;
}

参考链接:
https://blog.csdn.net/gao_xu_520/article/details/58588020
https://www.cnblogs.com/flybeijing/p/canvas_ellipse.html
https://www.cnblogs.com/fangsmile/p/9530226.html

相关文章

  • 简单记录 Canvas 中绘制椭圆形

    虽然可以直接用 CanvasRenderingContext2D.ellipse()[https://develo...

  • HTML5Canvas

    Canvas绘制简单图形 Canvas简单使用 canvas元素本省并不能实现图形绘制功能,绘制图形的工作需要有J...

  • 关于beginPath的一些认识

    canvas 中的beginPath()他的作用很简单,就是开始一段新路径. canvas中的绘制方法(如stro...

  • zrender 绘制带有中垂线的线段

    zrender(Zlevel Render) 是一个轻量级的Canvas类库,绘制直线是很简单的事情,但是绘制中垂...

  • 14-JS canvas 学习

    Canvas简介 canvas作用: canvas元素可以让用户在网页上绘制图形; canvas介绍 HTML5中...

  • 学习canvas

    HTML中的元素canvas只支持一种原生的图形绘制:矩形。canvas提供了三种方法绘制矩形 fillRect(...

  • 浅析HTML5的Canvas——案例绘制

    1. Canvas绘制五环 2.Canvas绘制饼状图以及绘制文字 3. Canvas绘制一堆不断变大变小的随机移...

  • 四、Android绘制知识总结(画布篇)

    Canvas(画布),绘制的载体,通过Paint(画笔)可以在上面绘制所有你想绘制的图案。 1、Canvas绘制A...

  • canvas

    canvas canvas绘制 获取元素var canvas = document.getelementbyid(...

  • Android中测量文字的宽度和高度

    Android中,在自定义View中通过Canvas绘制文字时,经常需要测量文字的宽度和高度。这里记录下几种比较常...

网友评论

    本文标题:简单记录 Canvas 中绘制椭圆形

    本文链接:https://www.haomeiwen.com/subject/jpoabktx.html