3

現在、画像のポリゴンを生成するマスクジェネレーターを作成しようとしています。これが私のコードです。

Bitmap bmp = new Bitmap(file);
int w = bmp.Width;
int h = bmp.Height;
List<Point> vertices = new List<Point>();

for (int y=0; y<h; y++)
{
    bool rowbegin = false;
    for (int x=0; x<w; x++)
    {
        Color c = bmp.GetPixel(x, y);
        if (!rowbegin)
        {
            // Check for a non alpha color
            if (c.A != Color.Transparent.A)
            {
                rowbegin = true;
                // This is the first point in the row
                vertices.Add(new Point(x, y));
            }
        } else {
            // Check for an alpha color
            if (c.A == Color.Transparent.A)
            {
                // The previous pixel is the last point in the row
                vertices.Add(new Point(x-1, y));
                rowbegin = false;
            }
        }
    }
}

// Convert to an array of points
Point[] polygon = vertices.ToArray();

Graphics g = Graphics.FromImage(bmp);

g.DrawPolygon(Pens.LawnGreen, polygon);
g.Dispose();

しかし、私は間違った出力を得ています。

ここに画像の説明を入力

必須。

ここに画像の説明を入力

私が欲しいのは、キャラクター間のギャップも空にすることです。また、なぜ DrawPolygon がそれを埋めているのですか?

ありがとう。

4

1 に答える 1