C#通过颜色循环?
在我的程序中,我需要循环使用已知的可用用户颜色,以使其看起来平滑自然,就像DWM颜色滑块一样 颜色也必须转换为uintC#通过颜色循环?,c#,winforms,loops,colors,C#,Winforms,Loops,Colors,在我的程序中,我需要循环使用已知的可用用户颜色,以使其看起来平滑自然,就像DWM颜色滑块一样 颜色也必须转换为uint private static uint ColorToBgra(Color { return (uint) (color.B | (color.G << 8) | (color.R << 16) | (color.A << 24)); } private static uint colortogra(颜色 { 返回(u
private static uint ColorToBgra(Color
{
return (uint)
(color.B | (color.G << 8) | (color.R << 16) | (color.A << 24));
}
private static uint colortogra(颜色
{
返回(uint)
(color.B |)(color.G这可能会把你推向正确的方向
// 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);
}
//w从0变为100
专用静态颜色光谱颜色(int w)
{
浮球r=0.0f;
浮球g=0.0f;
浮球b=0.0f;
w=w%100;
如果(w<17){
r=-(w-17.0f)/17.0f;
b=1.0f;
}否则,如果(w<33){
g=(w-17.0f)/(33.0f-17.0f);
b=1.0f;
}否则,如果(w<50){
g=1.0f;
b=-(w-50.0f)/(50.0f-33.0f);
}否则如果(w<67){
r=(w-50.0f)/(67.0f-50.0f);
g=1.0f;
}否则如果(w<83){
r=1.0f;
g=-(w-83.0f)/(83.0f-67.0f);
}否则{
r=1.0f;
b=(w-83.0f)/(100.0f-83.0f);
}
返回颜色.FromArgb((int)r*255,(int)g*255,(int)b*255);
}
你的代码让我的眼睛流血。顺便说一句,Color.ToArgb()
与colortobra()的作用相同
方法。你在哪里找到这个代码的?我认为蓝色的颜色应该从颜色.B
右移。据我所知,颜色元素的顺序是bGrA
而不是很多人认为的aRgB
。你应该让我们知道DWM颜色滑块的外观,这样我们可能会有另一个ap方法。这里是所有代码的地方:)我对编程非常陌生,我不知道如何在我的程序中实现这一点,有什么帮助吗?我已经编辑了我的答案,使其与System.Drawing.Color而不是XNA的Color一起工作。