0

次のコードでは:

    Bitmap bmp = new Bitmap((int)ArrayHeight, (int)ArrayWidth, System.Drawing.Imaging.PixelFormat.Format32bppArgb);
    Graphics gBmp = Graphics.FromImage(bmp);
    gBmp.CompositingMode = CompositingMode.SourceCopy;
    System.Drawing.Color green = System.Drawing.Color.FromArgb(0x40, 0, 0xff, 0);
    System.Drawing.Brush greenBrush = new SolidBrush(green);
    gBmp.FillPolygon(greenBrush, polygonPoints);


    for (int i = 0; i < ArrayHeight; i++)
    {
        for (int j = 0; j < ArrayWidth; j++)
        {
            System.Drawing.Color pixel = bmp.GetPixel(i,j);

            if (pixel.IsSystemColor.Equals("green"))
            {
                PolyArray[i, j] = (byte)TerrainValue;
            }
        }
    } 

ビットマップ内のその位置にあるピクセルがシステム描画色「緑」であるかどうかを確認したいのですが、決して true を返しません。

私は何を間違っていますか?

4

1 に答える 1

3

greenシステムカラー と比較する必要がある理由がわかりません。IsSystemColorを返しますbool

しかし、これはうまくいくはずです。

if (pixel.IsSystemColor)
{
    PolyArray[i, j] = (byte)TerrainValue;
}

または(私は本当にこれがあなたが望むものだと思います)

if (pixel == green)
{
    PolyArray[i, j] = (byte)TerrainValue;
}
于 2013-03-06T20:03:46.447 に答える