更换颜色C#

时间:2013-05-27 17:35:40

标签: c# colors

我正在制作一个程序来生成一个位图,该位图首先生成一条蓝色的河流(Color.Blue)。现在测试程序是否可以实际检查相同的颜色,以便我可以替换它,我创建了一个用Color.Blue替换Color.Blue的函数。问题是,当我用河流生成Bitmap,然后尝试用其他颜色替换它时,它似乎无法识别蓝色,并且就此而言也要替换它。这是一个非常奇怪的错误,我似乎无法确切地知道出了什么问题。而且我很确定它会以正确的颜色生成河流。 这是我的颜色替换代码: "河"变量等于Color.Blue。

        private void button2_Click(object sender, EventArgs e)
    {
        for (int x = 0; x < 20; x++) {
            for (int y = 0; y < 20; y++) {
                Color tempCol = city.GetPixel(x, y);
                if (tempCol == river) {
                    city.SetPixel(x, y, Color.Yellow);
                }
            }
        }
        pictureBox1.Image = city;
        MessageBox.Show("Done");
    }

1 个答案:

答案 0 :(得分:4)

问题在于你如何比较颜色。如果你看documentation,就会说:

  

此结构仅与其他Color结构进行比较。至   仅根据ARGB值比较颜色,你应该使用   ToArgb方法。这是因为Equals and Equality成员   使用不仅仅是ARGB值来确定等效性   颜色。

     

例如,不考虑黑色 FromArgb(0,0,0)   相等,因为黑色是命名颜色而FromArgb(0,0,0)不是。

因此,更好的比较是:

if (tempCol.ToArgb() == river.ToArgb()) 
{
     city.SetPixel(x, y, Color.Yellow);
}