【问题标题】:How to create a System.Drawing.Color from its hexadecimal RGB string?如何从其十六进制 RGB 字符串创建 System.Drawing.Color?
【发布时间】:2010-12-27 05:38:12
【问题描述】:

我想从#FF00FFFF00FF 之类的值创建System.Drawing.Color,而无需为此编写代码。有任何 .NET 内置解析器吗?

【问题讨论】:

    标签: .net colors parsing hex system.drawing.color


    【解决方案1】:
    ColorTranslator.FromHtml("#FF00FF");
    

    【讨论】:

      【解决方案2】:

      您可以使用 System.Drawing.ColorTranslator 静态方法 FromHtml。

      使用:

      System.Drawing.ColorTranslator.FromHtml("#FFFFFF");
      

      【讨论】:

        【解决方案3】:

        当您使用Convert-Class 时,这相当容易。 ToInt32 函数有一个重载,第二个参数表示字符串所在的基数。

        using System.Drawing
        
        Color yourColor = Color.FromARGB(Convert.ToInt32("FF00FF", 16));
        

        【讨论】:

          【解决方案4】:

          使用ColorConverter 类:

          var converter = System.ComponentModel.TypeDescriptor.GetConverter( typeof( Color ) );
          color = converter.ConvertFromString( "#FF00FF" );
          

          这也可以从标准命名颜色转换,例如ConvertFromString("蓝色")

          有关标准 .NET 类型转换机制的讨论,请参阅 here

          【讨论】:

            【解决方案5】:

            如果您要使用的颜色是常量,在 C# 中使用 System.Drawing.Color.FromArgb (0xFF00FF)。这比System.Drawing.Color.FromNameSystem.Drawing.Color.FromHtml 稍快,因为从字符串到整数的解析是在编译时完成的,而不是在运行时完成的。

            【讨论】:

              【解决方案6】:

              FromName 方法对我有用

              System.Drawing.Color.FromName("#FF00FF");
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2020-10-17
                • 2014-04-25
                • 2011-08-05
                • 1970-01-01
                • 2021-03-22
                • 1970-01-01
                相关资源
                最近更新 更多