2

如果我有这样的 QuadCurve(+= 节点):

+         +
 \      ./
   +--⁻⁻

我用Java 2D填充它,结果是这样的:(x=有色)

+xxxxxxxxx+
 \xxxxxx./
   +--⁻⁻

但我想给另一面上色:

+         +
x\      ./x
xxx +--⁻⁻xx
xxxxxxxxxxx

这通过在曲线周围绘制一个矩形来成功,我想为另一侧着色,然后用背景颜色填充曲线。

但这不足以填充凸圆形(基于 QuadCurves)多边形。如果矩形的某些坐标(如我使用的技巧中所述)与多边形的其他部分重叠。这是两张图片(绿色区域是我的多边形):

替代文字 http://img204.imageshack.us/img204/7823/convexpolygon.png 替代文字 http://img708.imageshack.us/img708/3669/convexpolygon2.png

所以,问题很简单:“如何为曲线的形状构建着色?”
但我认为答案并不简单......

非常感谢任何建议。
提前致谢。

如果我没有得到答案,也许我会为这个问题悬赏

4

1 回答 1

2

选择一个已知在多边形内的点。

知道“边界颜色”(在本例中为黑色)。

recurrsiveFill(Pixel p, Color fill, Color bound) {
    p.setColor(fill);
    if(p.left.color  != bound && p.left.color != fill) 
        recurrsiveFill(p.left , fill, bound);
    if(p.right.color != bound && p.right.color != fill) 
        recurrsiveFill(p.right, fill, bound);
    if(p.up.color    != boun d&& p.up.color    != fill) 
        recurrsiveFill(p.up,    fill, bound);
    if(p.down.color  != bound && p.down.color  != fill) 
        recurrsiveFill(p.down,  fill, bound);
}

您可以根据需要对其进行调整以满足您的特定需求。

这适用于完全有界形状的任何填充。您还需要合并特殊条件(例如图片的边缘)。

于 2010-05-28T21:09:43.017 回答