2

このようなQuadCurve(+=ノード)がある場合:

+         +
 \      ./
   +--⁻⁻

そして、Java 2Dで入力すると、結果は次のようになります:(x=色付き)

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

しかし、私は反対側を着色したいと思います:

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

これは、反対側に色を付けたい色で曲線の周りに長方形を描画してから、曲線を背景色で塗りつぶすことで成功します。

しかし、これは凸状の丸みを帯びた(QuadCurvesに基づく)ポリゴンを塗りつぶすには十分ではありません。長方形のいくつかの座標の場合(私が使用したトリックで説明したように)、ポリゴンの他の部分と重なります。これが2つの画像です(緑色の領域は私のポリゴンです):

代替テキスト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 に答える