在RGB颜色交叉淡入淡出的C#中寻求帮助

| 好的,我用C#编写了一个应用程序,该应用程序使用外部LED控制器从屏幕上轮询信息以获取反光SFX。我的问题是,代码是什么?如何制作彩色交叉淡入淡出类型的东西,我得到从红色到绿色到蓝色的淡出,然后将RGB值作为
red = CODE;
green = CODE; 
blue = CODE;
我很早以前在C ++中使用\“ Interpolation(FadeSteps,Delay,Array)\”做到了,我只是不知道在C#中如何 想想画一个2D盒子,然后让它从一种颜色淡入另一种颜色就可以了。 我只想能够设置淡入淡出的速度 关于控制什么的想法     
已邀请:
好吧,如果我了解您的权利,您想从红色逐渐淡入绿色到蓝色吗? 从一个结构和一个枚举开始,以保​​存我们的颜色数据和状态。
public enum PrimaryColor
{
    Red,
    Green,
    Blue
}

public struct Color
{
    public byte r;
    public byte g;
    public byte b;

    public Color(byte r, byte g, byte b)
    {
        this.r = r;
        this.g = g;
        this.b = b;
    }
}
然后,我们创建一些变量来保存状态数据,包括将要遍历的数组。
Color ActualColor = new Color(255, 0, 0);
int State = 0;
PrimaryColor[] Order = { PrimaryColor.Red, PrimaryColor.Green, PrimaryColor.Blue };
然后,在您的更新函数(例如计时器或while循环等)中,我们添加了一个小小的switch语句来更新颜色,检查字节下溢并更改状态。
switch (Order[State])
{
    case PrimaryColor.Red:
        ActualColor.r++;
        if(ActualColor.g > 0) ActualColor.g--;
        if (ActualColor.b > 0) ActualColor.b--;
        if (ActualColor.r == 255 && ActualColor.g == 0 && ActualColor.b == 0) State++;
        break;
    case PrimaryColor.Green:
        ActualColor.g++;
        if (ActualColor.r > 0) ActualColor.r--;
        if (ActualColor.b > 0) ActualColor.b--;
        if (ActualColor.r == 0 && ActualColor.g == 255 && ActualColor.b == 0) State++;
        break;
    case PrimaryColor.Blue:
        ActualColor.b++;
        if (ActualColor.g > 0) ActualColor.g--;
        if (ActualColor.r > 0) ActualColor.r--;
        if (ActualColor.r == 0 && ActualColor.g == 0 && ActualColor.b == 255) State++;
        break;
    default:
        break;
}
if (State == Order.Length) State = 0;

//Send color data to your controller
    

要回复问题请先登录注册