是否有可能找到给定rgb组合的相反颜色?例如,我在基本应用程序中有以下内容。
myColor red = new myColor(0, true), green = new myColor(0, true), blue = new myColor(0, true), theColor;
Random rand = new Random(DateTime.Now.Millisecond);
int color = 0;
void timer_Tick(object sender, EventArgs e)
{
switch (color)
{
case 0: theColor = red; break;
case 1: theColor = green; break;
case 2: theColor = blue; break;
}
if (theColor.Up)
{
theColor.Value += 0.01F;
if (theColor.Value + 0.01F > 1) { theColor.Up = false; color = rand.Next(3); }
}
else if (!theColor.Up)
{
theColor.Value -= 0.01F;
if (theColor.Value - 0.01F < 0) { theColor.Up = true; color = rand.Next(3); }
}
label1.Text = red.Value + Environment.NewLine + green.Value + Environment.NewLine + blue.Value;
FadeBackground(red.Value, green.Value, blue.Value);
}
void FadeBackground(float red, float green, float blue)
{
BackColor = Color.FromArgb((int)((1 - red) * 255), (int)((1 - green) * 255), (int)((1 - blue) * 255));
label1.ForeColor = BackColor;
//label1.BackColor;
}
class myColor
{
public myColor(float value, bool up)
{
Value = value;
Up = up;
}
public float Value;
public bool Up;
}
但我希望能够改变标签的背景颜色,使其始终与背景无关,或相反的颜色。
提前致谢,我希望这是有道理的。
答案 0 :(得分:4)
查看此SO问题。接受的答案似乎是你的票。
答案 1 :(得分:3)
您需要将颜色转换为HSV。 As seen in this SO question
获得相反的180度色调值:
hue =(hue + 0.5f)%1.0f
将您的颜色从HSV转换回RGB,这也在上面的帖子中得到了解答。
答案 2 :(得分:1)
您可以使用公式Hue, Saturation, Lighting将RGB值转换为here(HSL)值。然后,您只需将Hue
移动180度,但保持饱和度和光线。最后,转换back。
This是一个很好的指南。
答案 3 :(得分:0)
相反的颜色是White的RGB值减去Color的RGB值:
例如,如果颜色为100-100-100,则相反的是155-155-155。