我有将字符串十六进制代码转换为 Brush 对象的类
public static class StringBrushConverter
{
public static Brush FromStringToBrushConvert(string hexCode)
{
var converter = new BrushConverter();
return (Brush)converter.ConvertFromString(hexCode);
}
}
当我试图找到带有某种笔触颜色的线条时,我找不到它。
foreach (System.Windows.Shapes.Line child in canvas.Children.OfType<System.Windows.Shapes.Line>())
{
if (child.Stroke == StringBrushConverter.FromStringToBrushConvert("#d7d7d7"))
{
canvas.Children.Remove(child);
}
}
不是抛给我异常就是找不到。当我将所有画笔添加到列表中时,我发现了一些我不知道为什么会出现的东西。笔划不是#D7D7D7。是#FFD7D7D7。
我的问题是:
- 为什么 .Net 在我设置的十六进制代码之前添加 FF,就像在 Line 中设置的一样。
- 这两个FF是什么意思。
- 可以将 FF 改成 B3 的样子。
最佳答案
您在这里处理的是 ARGB 实体 - “alpha”、“red”、“green”和“blue”。如果您像在代码 ("#d7d7d7"
) 中那样仅指定 3 个元素,则转换器会隐式添加一个 255(最大强度)的 alpha channel 。
当它被转换回字符串时,它会在 ARGB 值的前面包含 'ff' (=255)。
关于c# - 为什么 Line.Stroke.ToString() 返回 8 个符号的十六进制代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35307825/