如何将十六进制 #FFFFFF 转换为 System.Drawing.Color

117

https://dev59.com/dnI95IYBdhLWcg3w3yJU - Alex A.
2
投票重新开放,重复的问题涉及不同类型的颜色结构。 - gunr2171
3个回答

279
string hex = "#FFFFFF";
Color _color = System.Drawing.ColorTranslator.FromHtml(hex);

注意:哈希值很重要!


5
在UWP中,没有System.Drawing命名空间怎么办? - Adrian K
3
@AdrianK 使用codeteq的答案对我有用,适用于NetStandard 2.0。 - wonea
1
这对我有用:item.BackgroundColor = Color.FromHex(line.s_BackGroundCol); - Jeppen

29
你可以做。
var color =  System.Drawing.ColorTranslator.FromHtml("#FFFFFF");

或者这样做(您需要 System.Windows.Media 命名空间)

var color = (Color)ColorConverter.ConvertFromString("#FFFFFF");

当我转换为白色时,我得到的不是完全的白色。 - Darius Miliauskas

13

移除 '#' 并执行

Color c = Color.FromArgb(int.Parse("#FFFFFF".Replace("#",""),
                         System.Globalization.NumberStyles.AllowHexSpecifier));

1
有一些选项可用,不需要将其转换为数字值,这是一个不必要的步骤。OP指出它是一个字符串。 - freefaller
5
其他解决方案也将字符串转换为数字值,只是它们是在内部完成的。如果这是一个优化问题,那么需要进行性能测试以查看Color.FromArgb()int.Parse()相比,ColorConvertor.ConvertFromString()ColorTranslator.FromHtml()如何表现。 - jwatts1980
那不会有一个 alpha 值为 0 吗? - Nyerguds

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接