【问题标题】:Looking for help in C# with RGB color cross fade在 C# 中寻求 RGB 颜色交叉淡入淡出的帮助
【发布时间】:2011-04-14 22:18:03
【问题描述】:

好的,我用 C# 制作了一个应用程序,该应用程序使用外部 LED 控制器从我的屏幕轮询信息以获得流光溢彩 SFX。我的问题是,代码是什么,或者我如何制作一个颜色交叉渐变类型的东西,让我从红色渐变到绿色再到蓝色,并将 RGB 值输出为

red = CODE;
green = CODE; 
blue = CODE;

我很久以前在 C++ 中使用“Interpolation(FadeSteps, Delay, Array)”完成了这项工作,我只是不知道如何在 C# 中使用

考虑绘制一个 2D 盒子,让它从一种颜色渐变到另一种颜色。

我只是希望能够设置淡入淡出的速度
Idea as to what it's controlling

【问题讨论】:

  • 你想挥手创作漫画吗?酷!

标签: c# colors fading


【解决方案1】:

好吧,如果我没听错的话,你想从红色渐变到绿色再到蓝色?

从一个结构体和一个枚举开始来保存我们的颜色数据和状态。

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

【讨论】:

  • 非常感谢,我还在做婴儿步骤这是我使用 C# 的第五天,我确实让它工作得很好(我之前也有它工作过,但我使用了级联的计时器 LOL)我仍然想看看其他人要说什么并尝试所有这些帮助我了解下一个项目的更多信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-19
  • 1970-01-01
  • 2013-07-28
  • 2013-10-01
  • 1970-01-01
  • 2016-05-12
  • 1970-01-01
相关资源
最近更新 更多