美文网首页
Canvas绘图挖空效果

Canvas绘图挖空效果

作者: 笨小孩81 | 来源:发表于2019-06-14 18:24 被阅读0次

开发中遇到一个BUG,绘制的图形中,有些重叠的部分不填充颜色,也就是出现挖空效果,有些又不挖空。
排查过程:
1、在新的页面中,只绘制这里两个图形,稳定复现挖空效果,
2、手动绘制两个矩形却不挖空,用moveTo lineTo 绘制矩形同样不挖空
3、观察两个图形的坐标,发现一个是顺时针一个是逆时针。
4、翻转其中一个图形的坐标数组,再次绘制,挖空效果消失。

结论:Canvas绘图的时候,两个重叠的图形,如果绘制方向不一致,则会出现挖空效果。

问题:如何检测是否是顺时针?
看这里: https://www.cnblogs.com/wangyumin/p/5323518.html
搬运:
判断三点是顺时针还是逆时针方向
设 p1=(x1,y1), p2=(x2,y2), p3=(x3,y3)
求向量
p12=(x2-x1,y2-y1)
p23=(x3-x2,y3-y2)
则当 p12 与 p23 的叉乘(向量积)
p12 x p23 = (x2-x1)(y3-y2)-(y2-y1)(x3-x2)
为正时,p1-p2-p3 路径的走向为逆时针,
为负时,p1-p2-p3 走向为顺时针,
为零时,p1-p2-p3 所走的方向不变,亦即三点在一直线上。

代码实现:

function testClockwise (lines) {
    var c = (lines[1].x-lines[0].x)*(lines[2].y-lines[1].y)-(lines[1].y-lines[0].y)*(lines[2].x-lines[1].x);
    return c < 0
}

相关文章

  • Canvas绘图挖空效果

    开发中遇到一个BUG,绘制的图形中,有些重叠的部分不填充颜色,也就是出现挖空效果,有些又不挖空。排查过程:1、在新...

  • Canvas基本篇

    8###什么是 Canvas canvas 是 HTML5 提供的一个用于展示绘图效果的标签. canvas 原意...

  • canvas基于语法(一)

    1.什么是Canvas canvas 是 HTML5 提供的一个用于展示绘图效果的标签.canvas 原意画布, ...

  • canvas系列(1)创建canvas、绘制路径、绘制圆弧

    1、定创建canvas画布 2、绘制直线canvas绘图是基于状态的,然后在调用方法来绘图 效果图: 3、绘制三角...

  • Web开发之Canvas的使用

    概念 canvas 是 HTML5 提供的一个用于展示绘图效果的标签. canvas 原意画布, 帆布. 在 HT...

  • Canvas绘图基础

    Canvas坐标系和绘图坐标系 Canvas绘图中牵扯到两种坐标系:Canvas坐标系与绘图坐标系。 Canvas...

  • canvas基础部分

    一、canvas的绘图表面 canvas有两种尺寸 canvas元素自身元素的尺寸 canvas绘图表面的尺寸 如...

  • Canvas的globalCompositeOperation属

    在canvas绘图的时候,globalCompositeOperation属性是ctx上设置图案叠加时的效果的,它...

  • 使用 canvas 绘图的几种方法

    canvas 标签 要使用 canvas 绘图,需要现在HTML中定义一个画布。 canvas 元素本身没有绘图能...

  • 三、Canvas基本绘图

    Canvas绘图(二) 本章将学习Canvas绘图的以下技巧 裁剪区域 图象合成 简单的Canvas变换 一、设置...

网友评论

      本文标题:Canvas绘图挖空效果

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