0

そこで、画像を読み込んで画像内の形状を3つの異なる色で塗りつぶすことができるプログラムの作成に取り組んでいます(このプログラムは、不動産区画をさまざまな色で着色するためのものです。色は赤、緑、黄色です)。画像を読み込んで保存し、画像自体に描画できますが、私の質問は次のとおりです。図形全体を塗りつぶすコードは何ですか。形はランダムです。.FillRectangle と .FillEllipse があることは理解していますが、ペイント バケツ ツールが必要です。どんな助けでも大歓迎です。

4

1 に答える 1

0

機能する .NET コードはありませんが、長年グラフィック デザインに携わってきたので、いくつかのアイデアを提供できます。

ペイント バケツ ツールは、「魔法の杖」ツールと同じように機能します。Adobe Photoshop のこれらのツールに精通している場合は、その動作に影響を与えるいくつかのパラメーターを知っているかもしれません。(Tolerance、Contiguous、Anti-Alias など)

画像内の特定のピクセルをクリックすると、これらのツールのいずれかが周囲のピクセルを分析して類似性を判断する必要があります。ツールのオプションの 1 つは、比較が「類似」または「類似していない」と見なされるしきい値を制御します。

白黒 (1 ビット) の画像を扱っているとします。白いピクセルをクリックすると、その点が他の白いピクセルに隣接しているかどうかを簡単かつ迅速に判断できます。白いピクセルが見つからなくなるまで比較をカスケードし、その領域を塗りつぶします (または選択します)。

ただし、ここで 8 ビットのグレースケール イメージを考えてみましょう。白 (255) ピクセルをクリックすると、非常に明るいが同一ではないピクセルが隣接する可能性があります (値 250 ~ 254 など)。これらの類似しているが同一ではない色を塗りつぶす/選択するかどうかは、類似性のしきい値に基づく必要があります。

JPG 画像は非可逆圧縮アルゴリズムを採用しており、他の点では類似した色にわずかな変化をもたらします。これにより、低い許容値を使用しても塗りつぶされたり、適切に選択されない「あいまいな」領域が生じます。目的の効果を得るには、元のピクセルからの偏差をある程度許容する必要があります。

于 2012-10-30T17:41:03.700 に答える