我有一个将字符串十六进制代码转换为Brush对象
的类public static class StringBrushConverter
{
public static Brush FromStringToBrushConvert(string hexCode)
{
var converter = new BrushConverter();
return (Brush)converter.ConvertFromString(hexCode);
}
}
当我尝试使用某种颜色的笔划找到Line时,我找不到它。
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。
我的问题是:
答案 0 :(得分:7)
你正在处理一个ARGB实体 - 'alpha','red','green'和'blue'。如果您只在代码中指定了3个元素("#d7d7d7"
),则转换器会隐式添加255通道(全强度)。
当它转换回字符串时,它将在ARGB值的前面包含'ff'(= 255)。
答案 1 :(得分:2)
前两个字母表示不透明,当然您可以更改它。
此外,你的第二段代码是错误的,因为你试图比较对象的引用而不是值。尝试使用object.Equals()。