【问题标题】:C# - DotNetBar - Visual Studio - Testing tint colors?C# - DotNetBar - Visual Studio - 测试色调?
【发布时间】:2012-01-24 05:31:17
【问题描述】:

我想尝试一下 dotnetbar 样式管理器的色调。 C# 的 System.Drawing.Color 中有很多颜色,所以我想用一个按钮来制作一个简单的应用程序,该按钮可以遍历每种颜色。

我会做某种 foreach 循环或类似的事情,但它说 System.Drawing.Color 是一种类型。我是 C# 新手,有没有办法做到这一点?

【问题讨论】:

    标签: c# visual-studio for-loop struct


    【解决方案1】:

    您指的是通过静态属性在System.Drawing.Color structure 中定义的命名颜色。它们都列在文档中,但正如您所发现的,没有直观的方式循环它们。

    相反,您需要使用Reflection(简而言之,可以看到自身的代码)来获取它们。基本上,您所做的是获取 Color 类型中所有公共静态属性的集合(在这种情况下,恰好是命名的颜色),然后循环遍历其中的每一个。

    例如,您可能会使用这样的代码(警告,未经测试!):

    var colorType = typeof(System.Drawing.Color);
    var staticProperties = colorType.GetProperties(BindingFlags.Static | BindingFlags.Public);
    var colors = staticProperties.Select(prop => (Color)prop.GetValue(null, null));
    foreach (Color clr in colors)
    {
        // Test the color...
    }
    

    【讨论】:

    • Color 没有 getType 方法:(
    • @Walkerneo:哎呀;试试看。
    【解决方案2】:

    如果你还想尝试一下,只是为了好玩,我建议以下。

    (你说你是新人,那我来一步步指导)

    我们将做一个简单的例子,我们将改变我们要按下的按钮的颜色。

    1. 创建一个带有按钮的表单并向其中添加一个后台工作者(可以在工具箱中找到)。
    2. 选择 backgroundWorker1,切换到事件视图并双击 DoWork 事件。
    3. 您现在应该获得一个 backgroundWorker1_DoWork 方法。
    4. 添加一些代码:

      for (int r = 0; r <= 255; r++)
      {
          for (int g = 0; g <= 255; g++)
          {
              for (int b = 0; b <= 255; b++)
              {
                  button1.BackColor = Color.FromArgb(r, g, b);
              }
          }
      }
      
    5. 在按钮中你现在只需调用

      backgroundWorker1.RunWorkerAsync();
      

    现在您可以长时间观察颜色了。 :)

    【讨论】:

      【解决方案3】:

      Color.FromArgb 可以解决问题。使用它你可以制作新的颜色。

      例如做红色:

      Color c = Color.FromArgb(255, 0, 0); 
      

      顺便说一句,“遍历每种颜色”可能有点多。有 256(alpha) x 256(red) x 256(green) x 256(blue) 颜色。那是 4294967296 组合。

      【讨论】:

      • 是的,这就是我宁愿使用内置颜色的原因。无论如何循环遍历结构的字段?
      猜你喜欢
      • 1970-01-01
      • 2016-10-30
      • 1970-01-01
      • 1970-01-01
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-13
      相关资源
      最近更新 更多