我有一堆Color
对象(.Net)。我想将它们转换为十六进制,这与像很简单:十六进制到六角形速记
Dim clr As Color = Color.FromArgb(255, 0, 0)
Dim clrString = ColorTranslator.ToHtml(clr)
是否有.NET或通过正则表达式(或其他方式)的方式,我可以决定是否六角简写(如#F00
)是否可用于指定Color
,然后将其转换为?因此,对于可以使用十六进制速记的颜色,转换为该速度,否则,转换为十六进制对#FF0000
。
感谢马修。不幸的是,这只能让我使用'FF'和'00'工作。它不提供像Color.Olive这样的颜色的匹配,它是'#808000',可以用十六进制速记写成#880。 – 2010-06-05 00:11:44
做了一些更多的研究,结果是速记只能用十六进制写成。你的代码很棒!我还发现如果颜色值字节可以除以17并返回一个整数(即它不是浮点数),那么它可以写成简写。不知道背后的数学,但它很酷。 – 2010-06-05 03:10:21
17是0x11。所有具有加倍十六进制数字的字节都是其倍数。 – 2010-06-05 09:38:57