如何从十六进制颜色代码(例如#FFDFD991 )中获得颜色?

我正在读取文件,并且正在获取十六进制颜色代码。 我需要为十六进制颜色代码创建相应的System.Windows.Media.Color实例。 框架中是否有内置方法可以做到这一点?


#1楼

您可以看到Silverlight / WPF使用十六进制值将椭圆设置为十六进制颜色

your_contorl.Color = DirectCast(ColorConverter.ConvertFromString("#D8E0A627"), Color)

#2楼

下面的三个变体给出完全相同的颜色。 最后一个优点是可以在Visual Studio 2010 IDE中突出显示(可能是ReSharper在做),并使用适当的颜色。

var cc1 = System.Drawing.ColorTranslator.FromHtml("#479DEE");var cc2 = System.Drawing.Color.FromArgb(0x479DEE);var cc3 = System.Drawing.Color.FromArgb(0x47, 0x9D, 0xEE);

#3楼

WPF:

using System.Windows.Media;//hex to color
Color color = (Color)ColorConverter.ConvertFromString("#7AFF7A7A");//color to hex
string hexcolor = color.ToString();

#4楼

假设您的意思是HTML类型的RGB代码(称为十六进制代码,例如#FFCC66),请使用ColorTranslator类:

System.Drawing.Color col = System.Drawing.ColorTranslator.FromHtml("#FFCC66");

但是,如果使用的是ARGB十六进制代码,则可以使用System.Windows.Media命名空间中的ColorConverter类:

Color col = ColorConverter.ConvertFromString("#FFDFD991") as Color;
//or      = (Color) ColorConverter.ConvertFromString("#FFCC66") ;

#5楼

如果您将HashCode表示为.GetHashCode() ,那么恐怕您将无法返回。 哈希函数不是双向的,您只能“前进”,不能返回。

如果您需要根据颜色的十六进制值获取颜色,请遵循Oded的建议。


#6楼

采用

System.Drawing.Color.FromArgb(myHashCode);

#7楼

如果您不想使用ColorTranslator,则可以轻松实现:

string colorcode = "#FFFFFF00";
int argb = Int32.Parse(colorcode.Replace("#", ""), NumberStyles.HexNumber);
Color clr = Color.FromArgb(argb);

颜色代码只是ARGB值的十六进制表示。

编辑

如果您需要使用4个值而不是一个整数,则可以使用此值(结合多个注释):

string colorcode = "#FFFFFF00";
colorcode = colorcode.TrimStart('#');Color col; // from System.Drawing or System.Windows.Media
if (colorcode.Length == 6)col = Color.FromArgb(255, // hardcoded opaqueint.Parse(colorcode.Substring(0,2), NumberStyles.HexNumber),int.Parse(colorcode.Substring(2,2), NumberStyles.HexNumber),int.Parse(colorcode.Substring(4,2), NumberStyles.HexNumber));
else // assuming length of 8col = Color.FromArgb(int.Parse(colorcode.Substring(0, 2), NumberStyles.HexNumber),int.Parse(colorcode.Substring(2, 2), NumberStyles.HexNumber),int.Parse(colorcode.Substring(4, 2), NumberStyles.HexNumber),int.Parse(colorcode.Substring(6, 2), NumberStyles.HexNumber));

注1 :NumberStyles在System.Globalization中。
注意2 :请提供您自己的错误检查(颜色代码应为6个或8个字符的十六进制值)


#8楼

我假设这是ARGB代码...您是指System.Drawing.Color还是System.Windows.Media.Color ? 后者例如在WPF中使用。 我还没有看到任何人提及它,所以以防万一您正在寻找它:

using System.Windows.Media;Color color = (Color)ColorConverter.ConvertFromString("#FFDFD991");

#9楼

对于任何试图从十六进制颜色代码转换为系统颜色的人来说,这篇文章都成了首选。 因此,我想我将添加一个全面的解决方案,以处理6位(RGB)和8位(ARGB)十六进制值。

根据Microsoft的默认设置,当从RGB转换为ARGB值时

alpha值隐式为255(完全不透明)。

这意味着,通过将FF添加到6位(RGB)十六进制颜色代码,它将变成8位ARGB十六进制颜色代码。 因此,可以创建一个处理ARGB和RGB十六进制的简单方法,并将它们转换为适当的Color结构。

    public static System.Drawing.Color GetColorFromHexValue(string hex){string cleanHex = hex.Replace("0x", "").TrimStart('#');if (cleanHex.Length == 6){//Affix fully opaque alpha hex value of FF (225)cleanHex = "FF" + cleanHex;}int argb;if (Int32.TryParse(cleanHex, NumberStyles.HexNumber, CultureInfo.InvariantCulture, out argb)){return System.Drawing.Color.FromArgb(argb);}//If method hasn't returned a color yet, then there's a problemthrow new ArgumentException("Invalid Hex value. Hex must be either an ARGB (8 digits) or RGB (6 digits)");}

这是受汉斯·凯斯汀(Hans Kesting)的回答启发的。


#10楼

如果要使用Windows Store应用程序执行此操作,请紧接着@Hans Kesting和@Jink回答:

    string colorcode = "#FFEEDDCC";int argb = Int32.Parse(colorcode.Replace("#", ""), NumberStyles.HexNumber);tData.DefaultData = Color.FromArgb((byte)((argb & -16777216) >> 0x18),(byte)((argb & 0xff0000) >> 0x10),(byte)((argb & 0xff00) >> 8),(byte)(argb & 0xff));

#11楼

    private Color FromHex(string hex){if (hex.StartsWith("#"))hex = hex.Substring(1);if (hex.Length != 6) throw new Exception("Color not valid");return Color.FromArgb(int.Parse(hex.Substring(0, 2), System.Globalization.NumberStyles.HexNumber),int.Parse(hex.Substring(2, 2), System.Globalization.NumberStyles.HexNumber),int.Parse(hex.Substring(4, 2), System.Globalization.NumberStyles.HexNumber));}

#12楼

我需要将十六进制颜色代码转换为System.Drawing.Color,特别是在WPF表单上作为背景的Alice Blue阴影,发现找到答案所需的时间比预期要长:

using System.Windows.Media;

-

System.Drawing.Color myColor = System.Drawing.ColorTranslator.FromHtml("#EFF3F7");
this.Background = new SolidColorBrush(System.Windows.Media.Color.FromArgb(myColor.A, myColor.R, myColor.G, myColor.B));

#13楼

您可以使用以下代码:

Color color = System.Drawing.ColorTranslator.FromHtml("#FFDFD991");

#14楼

最基本的就是:

Color.ParseColor("#ff43a047")

#15楼

还有一个简洁的扩展方法:

static class ExtensionMethods
{public static Color ToColor(this uint argb){return Color.FromArgb((byte)((argb & -16777216)>> 0x18),      (byte)((argb & 0xff0000)>> 0x10),   (byte)((argb & 0xff00) >> 8),(byte)(argb & 0xff));}
}

正在使用:

Color color = 0xFFDFD991.ToColor();

如何使用.NET从十六进制颜色代码中获取颜色?相关推荐

  1. html字颜色代码,css 字体颜色(css color)

    DIV CSS 字体颜色\css color知识实例讲解 在DIV+CSS网页中控制字体颜色的CSS单词为color:+颜色值.这里DIVCSS5详细为大家介绍CSS 字体颜色color的运用(div ...

  2. android 获取手机颜色代码,Android获取当前主题的颜色属性

    安卓代码中获取当前主题颜色方法的两种方法: 第一种方法: TypedArray array = getTheme().obtainStyledAttributes(new int[]{ android ...

  3. 在代码中获取ApplicationContext实例

    基于Spring的Java应用会通过ApplicationContext接口提供应用程序配置.我们常常需要在代码中获取当前的ApplicationContext.如在集成测试时,需要通过Applica ...

  4. 如何从代码中获取当前方法的名称[复制]

    本文翻译自:How to get the name of the current method from code [duplicate] This question already has an a ...

  5. 获取存储过程返回值及代码中获取返回值

    获取存储过程返回值及代码中获取返回值 1.OUPUT参数返回值例: 向Order表插入一条记录,返回其标识 CREATE PROCEDURE [dbo].[nb_order_insert]( @o_b ...

  6. 获取存储过程返回值及代码中获取返回值(转)

    获取存储过程返回值及代码中获取返回值 1.OUPUT参数返回值例: 向Order表插入一条记录,返回其标识 CREATE PROCEDURE [dbo].[nb_order_insert]( @o_b ...

  7. android获取颜色资源,Android中获取颜色的几种方法

    Android中获取颜色的几种方法: 通过android封装好的Color类中的常量 public static final int BLACK = 0xFF000000; public static ...

  8. 安卓代码中获取dp值为控件设置宽高,获取dimen值

    引言: 今天遇到一个问题,在自定义控件的时候,要求在代码中设置控件的宽高.本来自以为:对嘛,很简单,就是直接设置params //这样直接初始化的时候设置LayoutParams iconparams ...

  9. html css文字颜色代码,html的颜色怎么 HTML字体颜色代码怎么获取

    HTML里怎么设置字体颜色 HTML主要是用来写页面布局的,过程中经常需要设置页面某些字体的颜色,通常有三种常见方式可以进行自定义设置: 通过外部CSS样式来设置.可以在head标签中增加style样 ...

最新文章

  1. KDD 2017奖项全公布,华人成最大赢家
  2. hihoCoder 网络流四·最小路径覆盖
  3. 解读Windows更新下载器文件列表(推荐)
  4. 青龙羊毛——果园合集(快手+抖音)(教程)
  5. 百试不爽的30条职场经验(转)
  6. PAT:1034 Head of a Gang (30分)
  7. 计算机怎样连接网络适配器,win10 本地连接共享internet时, 会将承载网络适配器IP设置成192.168.137.1但不成功...
  8. hadoop namenode管理元数据机制
  9. java md5 算法实现_Java 实现Md5算法
  10. mysql 事件计划_mysql 事件计划
  11. 南昌大学利用计算机作弊怎样处分,关于江西南昌大学医学院计算机中心教师组织全国计算机二级考试集体作弊的意见书...
  12. android qq音乐api使用,QQ音乐API
  13. Mybatis 的日志管理
  14. 2020-8-4 Codeforces摸鱼报告
  15. python计算机视觉_Python计算机视觉编程
  16. 卡诺模型案例分析_客户满意之卡诺模型
  17. 40163 php,微信授权登录code 40163
  18. MySQL查询最大值、最小值所在行
  19. springboot引入validation
  20. springboot报错!!!

热门文章

  1. 一组数字1-n,随机取走3个,求被取走的数【腾讯前端面试题】
  2. linux 下常用操作命令
  3. 腾讯PHP工程师面试题两份
  4. 看病要排队 (hdu1873,优先队列)
  5. 面向对象设计思想_重要_2
  6. javascript中的'this'
  7. MongoDB:MapReduce基础及实例
  8. 让孩子从小自信的28个方法
  9. VisualStudio2005英文版被SQL2005简体中文版汉化
  10. ActiveMQ常见操作