我有一個委託代表返回正確的顏色,但仍然是錯誤
private delegate Color ColorDel(int x, int y);
其在某點返回一個顏色,用Bitmap.GetPixel(x,y)
即使我把顏色換成位圖直接之前使用,作爲Color.Red
, 返回的顏色與所有ARGB相同,但不在名稱上,即ffff0000
而不是紅色,因爲實際上是Color.Red
。 ToKnownColor
也沒有辦法。
關於此事的任何意見?
編輯,代碼:
class ColorDelegateTest
{
private delegate Color ColorDel(int x, int y);
private static bool FoundColor(int x, int y, Color color, ColorDel dlgt)
{
var theColor = dlgt.Invoke(x, y);
//theColor = "{Name=ffff0000, ARGB=(255, 255, 0, 0)}"
//Color.Red = "{Name=Red, ARGB=(255, 255, 0, 0)}"
var r = dlgt.Invoke(x, y) == color; //False
var t = dlgt.Invoke(x, y) == Color.FromArgb(255, 255, 0, 0); //True
var f = dlgt.Invoke(x, y) == Color.Red; //False
if (r || t || f)
return true;
return false;
}
private static void ItterateColors()
{
int xMax = 300;
int yMax = 300;
Bitmap bmp = new Bitmap(xMax, yMax);
ColorDel colorDelegate = new ColorDel(bmp.GetPixel);
for (int x = 0; x < xMax; x++)
for (int y = 0; y < yMax; y++)
{
bmp.SetPixel(x, y, Color.Red);
FoundColor(x, y, Color.Red, colorDelegate);
}
}
}
埃裏克
如果你能後的實際代碼(不只是委託聲明),這將使它更容易幫助你。 – 2011-01-13 14:04:06
順便說一句,這已經得到**沒有**與使用委託做。您可以通過直接嘗試使用`GetPixel`輕鬆地進行測試。 – 2011-01-13 14:30:04