小程序 canvas上clip不起作用,使用clearRect清除圆形

我把canvas背景色设置成了透明色,在上面先用fillRect画了一个白色画布,在画布上用clip想切一个圆形,结果怎么切都切不了,不起作用,后来用clearRect方式做出来,思路是用很多矩形堆积出圆形

// 绘制底层白色画布
    ctx.beginPath();
    ctx.fillStyle='white';
    ctx.fillRect(0, 0, ctxWidth, ctxHeight);
    ctx.closePath();

用了是上面的画了背景之后,再clip就不起作用,但是clearRect可以起作用,方法如下:

/**
 * canvas绘图相关
 * (x,y)为要清除的圆的圆心,r为半径,cxt为context
 *  用clearRect方法清除canvas上不能用clip剪切的圆形
 */
function clearArcFun(x, y, r, cxt) {
  var stepClear = 0.1;//这是定义精度 
  clearArc(x, y, r);
  function clearArc(x, y, radius) {
    var calcWidth = radius - stepClear;
    var calcHeight = Math.sqrt(radius * radius - calcWidth * calcWidth);

    var posX = x - calcWidth;
    var posY = y - calcHeight;

    var widthX = 2 * calcWidth;
    var heightY = 2 * calcHeight;

    if (stepClear <= radius) {
      cxt.clearRect(posX, posY, widthX, heightY);
      stepClear += 0.1;
      clearArc(x, y, radius);
    }
  }
}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 一、canvas简介 1.1 什么是canvas?(了解) 是HTML5提供的一种新标签 Canvas是一个矩形区...
    Looog阅读 4,032评论 3 40
  • canvas元素的基础知识 在页面上放置一个canvas元素,就相当于在页面上放置了一块画布,可以在其中进行图形的...
    oWSQo阅读 10,431评论 0 19
  •   HTML5 添加的最受欢迎的功能就是 元素。这个元素负责在页面中设定一个区域,然后就可以通过 JavaScri...
    霜天晓阅读 3,170评论 0 2
  • 第一章 HTML5 (2014年10月29日发布)新特性: 10个 (1)新的语义标签 (2)增强型表单 (3)视...
    fastwe阅读 1,030评论 0 1
  • 舌尖上的中国是一档闻名中外的美食节目。它靠介绍中国各地的美食而出名。那些没事的制作、来源都讲的一清二楚。他需要有超...
    201701李诗莹阅读 236评论 0 1

友情链接更多精彩内容