C#循环使用颜色
本文关键字:颜色 循环 | 更新日期: 2023-09-27 18:26:31
在我的程序中,我需要按顺序循环使用已知用户颜色,使其看起来平滑自然,就像DWM颜色滑块一样。
颜色必须转换为uint以及
private static uint ColorToBgra(Color
{
return (uint)
(color.B | (color.G << 8) | (color.R << 16) | (color.A << 24));
}
然后设置它。我试着将它设置为白色,uint为0,然后每0.1秒添加+1,但它不平滑,每隔250 uint就会变黑,然后继续。这对我有用吗?我试过了,但没有。
有什么想法吗?
这可能会把你推向正确的方向?
// w goes from 0 to 100
private static Color spectrumColor(int w)
{
float r = 0.0f;
float g = 0.0f;
float b = 0.0f;
w = w % 100;
if (w < 17) {
r = -(w - 17.0f) / 17.0f;
b = 1.0f;
} else if (w < 33) {
g = (w - 17.0f) / (33.0f - 17.0f);
b = 1.0f;
} else if (w < 50) {
g = 1.0f;
b = -(w - 50.0f) / (50.0f - 33.0f);
} else if (w < 67) {
r = (w - 50.0f) / (67.0f - 50.0f);
g = 1.0f;
} else if (w < 83) {
r = 1.0f;
g = -(w - 83.0f) / (83.0f - 67.0f);
} else {
r = 1.0f;
b = (w - 83.0f) / (100.0f - 83.0f);
}
return Color.FromArgb((int)r * 255, (int)g * 255, (int)b * 255);
}