在C#中,我如何通过编程生成以下图像?
http://deathmatchgame.files.wordpress.com/2010/07/color_picker.png
我清楚这需要很长时间来处理,但没关系,目前性能不是最重要的。 请注意,我不感兴趣的是图像右区域,那里只显示了灰度渐变。在C#中,我如何通过编程生成以下图像?
http://deathmatchgame.files.wordpress.com/2010/07/color_picker.png
我清楚这需要很长时间来处理,但没关系,目前性能不是最重要的。 请注意,我不感兴趣的是图像右区域,那里只显示了灰度渐变。从外观上看,这似乎是一个HSL颜色图表。下面的代码将生成一个二维颜色数组,应该对应于图像中的内容。我把FromHSL
的实现留给你,以及如何从这个数组得到实际的图像:
const int size = 1000;
const double ratio = 1.0 / size;
const double saturation = 1.0;
Color[,] colors = new Color[size,size];
for (int i = 0; i < size; i++)
{
double lightness = 1.0 - i*ratio;
for (int j = 0; j < size; j++)
{
double hue = j*ratio;
colors[i, j] = FromHSL(hue, saturation, lightness);
}
}