使用 'lineTo()' 绘制形状,我需要检查绘制的线是否创建了闭合形状。如果是这样,我需要用颜色填充该形状。有人可以让我知道这是否可能,如果可以,请告诉我该怎么做。谢谢
问问题
436 次
2 回答
0
在使用 lineTo 之前,调用 beginFill。像这样的东西:
var _s:Sprite = new Sprite();
_s.graphics.beginFill(0xFF0000);
_s.graphics.lineStyle(1, 0xFFFF00);
_s.graphics.lineTo(50, 0);
_s.graphics.lineTo(50, 50);
_s.graphics.lineTo(0, 50);
_s.graphics.lineTo(0, 0);
_s.graphics.endFill();
addChild(_s);
PS如果对您有帮助,请不要忘记接受答案。
于 2013-04-03T14:38:39.097 回答
0
最快的解决方案可能是在绘制路径时将路径存储为点列表,然后将每个新段与现有段检查相交。每当您找到一个时,请按以下顺序为填充绘制一个单独的循环:
- 路口。
- 现有线段的第二个顶点。
- 直到并包括新段的第一个顶点的所有中间顶点。
- 路口。
一个潜在的问题是,如果你画了几个小环,然后围绕它们转圈,你最终会得到一个大的填充物,它与自身相交并与小环重叠,这可能会导致边缘的渲染效果不佳。
理想情况下,您希望创建一个添加了任何交叉点的路径图,然后找到不包含在另一个循环中的每个循环,但这显然涉及更多。上一个问题有一些与查找所有不包含其他循环的循环相关的答案,可以通过组合共享边的循环来适应:Find all chordless cycles in an undirected graph。
于 2013-04-03T22:22:35.573 回答