假设我有两个颜色列表需要进行比较。我有一个用于比较颜色的函数,但我对该函数接收的类型有些困惑。如何转换它们的类型?
public bool AreColorsSimilar(Color c1, Color c2, int tolerance)
{
return Math.Abs(c1.R - c2.R) < tolerance &&
Math.Abs(c1.G - c2.G) < tolerance &&
Math.Abs(c1.B - c2.B) < tolerance;
}
这是我的第一个列表:
public static List<Color> PaletteOfSeasons()
{
List<Color> springColors = new List<Color>();
springColors.Add(ColorTranslator.FromHtml("#80a44c"));
springColors.Add(ColorTranslator.FromHtml("#b4cc3a"));
return springColors;
}
在另一个列表中,我正在从图像中提取像素:
public static IEnumerable<Color> GetPixels(Bitmap bitmap)
{
for (int x = 0; x < bitmap.Width; x++)
{
for (int y = 0; y < bitmap.Height; y++)
{
Color pixel = bitmap.GetPixel(x, y);
yield return pixel;
}
}
}
问题是,我怎样才能比较这些颜色?
List
进行排序吗?还是想要移除重复项? - Cody GrayList<Color>
参数的方法,该参数会被重新创建然后从方法中返回?它不需要这个参数。 - Tim SchmelterPaletteOfSeasons
中的任何颜色“相似”? - D StanleyBitmap.GetPixel()
可能会*相对较慢。如果可能的话,您可能需要考虑使用Bitmap.LockBits()
。 - Scott Chamberlain