【发布时间】:2013-03-06 20:00:00
【问题描述】:
在以下代码中:
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。
我做错了什么?
【问题讨论】:
-
System.Drawing.Color.FromArgb(0x40, 0, 0xff, 0)==bmp.GetPixel(i,j).IsSystemColor.Equals("green"))? -
我认为您的 PixelFormat 不匹配,这就是颜色值不匹配的原因。 “某些像素格式包含预乘颜色值。预乘意味着颜色值已经乘以 alpha 值。” msdn.microsoft.com/en-GB/library/…
-
这个链接可以给你一些线索...stackoverflow.com/questions/8104461/…