Graphics填充的问题

  • Creator 版本:

  • 目标平台:

  • 详细报错信息,包含调用堆栈:

  • 重现方式:

  • 之前哪个版本是正常的 :

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

  • 出现概率:

  • 额外线索:

请问各位,我在用creatorJs的Graphics功能画线填充的时候一直得不到自己想要的效果,我在Flash中用As3代码画出来的效果是这样的,这是我希望得到的效果!但是同样的方式,我在creatorJs中画完后填充,得到的却是这样的效果,

(忽略顶点的图片),请问是哪里出问题了吗?为什么无正确填充图形呢?

贴代码?

你如果要想要填充成第一个图案的话,最好是走两个三角形才可以,填充我记得是和起始顶点、最终顶点形成的路径进行填充的

其他代码因为有上下文的原因,所以我只贴出来画线部分
graphics.moveTo(350.95, 206.87);
graphics.lineTo(211.06, 326.54);
graphics.lineTo(349.38, 325.53);
graphics.lineTo(213.17, 201.42);
graphics.lineTo(350.95, 206.87);
graphics.fill();
graphics.stroke();
填充出来的就是这个结果了

尽管形状一致,但是在填(充颜)色上,采用的填色算法可能会不一致

看你Flash的结果,我大胆猜测,你描述这个形状的伪代码是

moveTo(leftTopPoint);
lineTo(leftBottomPoint);
lineTo(rightTopPoint);
lineTo(rightBottomPoint);
close(); // moveTo(leftTopPoint);

如果是这个结果,那么 Flash 这里的填色应该是遵循 「非零填充」 规则去进行填色,对应「非零填充」,还有另外一种叫 「奇偶填充」 规则

事实上,这两种规则也是大多数填色所采用的规则

而CCC上,不清楚,不过如果我的猜测是正确的话

那么从结果上看,CCC已经 “跳脱”出这种规则

谢谢你的回复,上图中我的画线规则这样的:
moveTo(leftTopPoint);
lineTo(rightBottomPoint);
lineTo(rightTopPoint);
lineTo(leftBottomPoint);
close(); //

然后得到的就是这样的结果,flash上面会在封闭的图形里进行填充,但是creator里面我就搞不懂是什么规则了

你可以找找引擎组大佬

请求打开引擎大佬大门的方法,谢谢!

走两个三角形的确可以做到,但是我有更复杂的比如6边形变形后形成的图形,会非常复杂,我还没有头绪怎样拆分三角形!

当你需要填充 不规则带孔图形 时,如果没有这种底层填色规则的支持,那么你将会很困难,快去找引擎大佬吧

是的,谢谢你的回复!

大佬,我也遇到了这个问题,请问解决了吗