レイヤーを使ったベクター描画プログラムを作りたいのですが、透明・不透明を使わないようにするために、最下層から最上位レイヤーまで各図形を1つのビットマップに描画したいです。塗りつぶしについては、形状を塗りつぶしたいと思います。私の問題は、描画されて塗りつぶされた形状がある場合、次の形状が少し重なり、新しい形状の境界線が他の形状と同じであり、塗りつぶしが部分的にしか塗りつぶされないことです。ターゲット カラーを使用するのではなく、フラッドフィルの実際の境界を見つけることができる形状の座標を指定する方法はありますか? ありがとう
1 に答える
1
フラッドフィルは、あなたが望むものには機能しません...次のいずれかを作成しない限り:
オプション 1: メモリの他の部分でフラッドフィルを使用してから、マスクを使用して必要な場所に形状をブリットします。透明性を避けたいと言ったので、このオプションは取り消し線を引いたようなものです... (私はそれでもお勧めします。本当に、そのピクセルがコピーされるかどうかを確認するかどうかを確認するのは難しくありません)
オプション 2: フラッドフィルを使用せずに簡単に塗りつぶすことができる基本的な形状のみを使用し、形状の各線の 2 つの端のピクセルの間に始点と終点がある水平線で塗りつぶします。それは正方形、円のためでしょう...
オプション 3: オプション 2 と同じですが、任意の三角形を許可します。
オプション 4: 3 と同じですが、ポイントのリストを読み取り、複数の長方形でオブジェクトを構成できるため、任意の形状 (凸形状も含む) を作成できます。それを適切に実装するのは本当に難しいでしょう(特に凸形状)。
于 2010-05-01T02:17:43.417 に答える