委托返回正确的颜色,但仍然错误

Eri*_*son 1 c# colors bitmap

我有一个代表

private delegate Color ColorDel(int x, int y);
Run Code Online (Sandbox Code Playgroud)

返回一个点的颜色,用于 Bitmap.GetPixel(x,y)

即使我之前直接将颜色放入位图中,作为a 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);
                }
        }
    }
Run Code Online (Sandbox Code Playgroud)

埃里克

Gab*_*abe 5

Color.Red包含一个表示它是已知颜色的位,但Color.FromArgb(255, 0, 0)不是这样它们不会相等.进行比较的一种方法是与以下方法进行比较.ToArgb():

dlgt.Invoke(x, y).ToArgb() == Color.Red.ToArgb()
Run Code Online (Sandbox Code Playgroud)