GraphicsPath
画像があり、画像を構成するピクセルのある種のしきい値に基づいて、画像の選択を表すものを作成したいと思います。たとえば、特定の色に近い色値を持つピクセルを考慮する色範囲アルゴリズムです。
現時点での私の問題は、ピクセルを選択するアルゴリズムではなくGraphicsPath
、現在のコードでは複雑になりすぎて (ポイントが多すぎて)、作成に時間がかかり、特にそれをさらに管理するのに時間がかかります。
現時点では、次のコードを使用しているだけです (この例では、単に不透明なピクセルを使用しています)。ここで、Rectangle
取得したピクセルごとに を追加します。
BitmapData bitmapData = sourceBitmap.LockBits(new Rectangle(0, 0, sourceBitmap.Width, sourceBitmap.Height), ImageLockMode.ReadOnly, sourceBitmap.PixelFormat);
GraphicsPath gp = new GraphicsPath();
unsafe
{
byte* imagePointer = (byte*)bitmapData.Scan0;
for (int x = 0; x < bitmapData.Width; x++)
{
for (int y = 0; y < bitmapData.Height; y++)
{
if (imagePointer[3] != 0)
gp.AddRectangle(new Rectangle(x, y, 1, 1));
imagePointer += 4;
}
}
}
GraphicsPath
このプロセスまたは結果を単純化して、理想的には輪郭のみを使用して、より単純なパスを取得するにはどうすればよいですか?
EDIT
次に、次のパスに使用します。画面に輪郭を表示します(実行中のアリ)。他の画像のマスクとして使用します(パスから外れたものをキャンセルします)。ヒット テストを実行します (ポイントがパス内にあるかどうか)。例として: