【问题标题】:Setting a color to a int variable [closed]将颜色设置为 int 变量
【发布时间】:2016-12-31 23:30:15
【问题描述】:

我想为每个数字设置一个颜色,从 0 到 9,从白色到黑色白色为 0,黑色为 9,所以中间是蓝色 = 2,绿色 = 1,红色 = 4。 因此,当用户输入数字 2144214 时,我可以计算并创建新颜色。 像 2xgreen、2xblue 和 3xred 之类的东西,就是 2+2+1+1+4+4+4,结果是一种新颜色。 就是这个想法,但是让我死去的部分是将颜色值设置为变量,这可能吗? 我正在使用 WPF C# 应用程序。

【问题讨论】:

  • WPF 中的任何颜色都可以用一个 html 字符串表示:#TTRRGGBB 其中 TT 是透明度,RR,GG,BB 是红色、绿色和蓝色,因此您可以使用这一行创建任何颜色代码:颜色 color = (Color)ColorConverter.ConvertFromString("#FFDFD991");这是堆栈溢出的答案stackoverflow.com/questions/2109756/…
  • 我必须初始化红色、蓝色和绿色,以便稍后在应用程序中计算每种颜色的数量?

标签: c# wpf colors rgb


【解决方案1】:

我建议你使用枚举类型

enum Color
{
    white = 0,
    red = 1,
    blue = 2,
    black = 9
}

链接:https://msdn.microsoft.com/en-us/library/cc138362.aspx?f=255&MSPPError=-2147217396

【讨论】:

    【解决方案2】:

    查看您的完整问题,我认为您需要分别存储红色、绿色和蓝色,并根据输入的数字增加/减少这些值。它可以是这样的

    // get a digit
    
    switch (digit) {
        case 0: // black, darken the color
            red -= 4;  // value of 4 is arbitrary, it could be 1 or other
            green -= 4;
            blue -= 4;
            break;
        case 1: // red
            red += 4;
            break;
        case 2: // green
            green += 4;
            break;
        case 3: // blue
            blue+= 4;
            break;
        case 4:  // cyan
            green += 4;
            blue += 4;
            break;
        case 5:  // yellow
            red += 4;
            green += 4;
            break;
        case 6:  // magenta
            red += 4;
            blue += 4;
            break;
        case 7:  // white, lighten everything
            red += 4;
            green += 4;
            blue += 4;
            break;
        default:
            break;
    }
    

    当然,您需要将红色、绿色和蓝色初始化为 0,并且在建立颜色后,需要检查其有效性(许多颜色系统对每种颜色的限制为 255)。完成所有这些之后,您将拥有红色、绿色和蓝色,并且可以按照 @EdPlunkett 的建议将它们与 Color.FromArgb() 组合在一起。

    【讨论】:

    • 所以你建议我应该为不同的颜色制作 9 个案例,从 black=case 0 到 white=case 9?
    • 抱歉回复延迟。这就是上面代码的漂移。当然有很多方法可以做到这一点,并且有通过 RGB 或 HSL 选择颜色的既定方法。我不确定你想要什么,但听起来你有一盘水,想要添加更多的红色、绿色、蓝色等食用色素,具体取决于输入字符串。
    • 好吧,我会试着让它更容易理解 - 我想制作一个应用程序,用户可以在其中输入信息、ofc、数字,例如“输入您的年收入”,然后用户输入 321444并且该应用程序会根据这些数字制作颜色,我最初认为可以通过从 0 到 9 制作 10 种颜色来完成,但同时我发现仅使用红绿色和蓝色更容易。但我现在的问题是如何总结这些数字。
    • 我还为红色、绿色和蓝色做了 3 个列表,每个列表都有自己的数字,例如,红色有 0、1、3,绿色有 2、4、6、8,蓝色有 5 ,7,9 现在我想做的是总结所有的 1s、3s、4s 和 7s,它会给我每种颜色的值,然后我可以使用 FromRgb() 创建一个颜色。
    • 希望你现在明白了,但如果没有,你可以使用“%”(mod)运算符来获取数字的最后一位。例如,如果数字是 123456,那么 (123456 % 10) 是 6。要将数字向右移动,您需要除以 10。(123456 / 10) 是 12345,您可以从中提取最右边的数字。不要放弃。看看你能不能找到一个朋友来帮助你做这种事情。 Stackoverflow 对于定义明确、易于回答的问题可能非常挑剔。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-11
    • 1970-01-01
    • 2021-12-13
    • 2011-06-06
    • 1970-01-01
    • 2011-09-30
    • 2021-03-04
    相关资源
    最近更新 更多