Windows.UI.Color colorFromBrush;
if (brush is SolidColorBrush)
colorFromBrush = (brush as SolidColorBrush).Color;
else
throw new Exception("Can't get color from a brush that is not a SolidColorBrush");
var brushString = Foreground.ToString(); // brushString equals "#FF000000" (in case of black brush)
var brushWithoutHash = brushString.Substring(1); // brushWithoutHash equals "FF000000"
var color = Color.FromArgb(Convert.ToByte(brushWithoutHash.Substring(0, 2), 16), Convert.ToByte(brushWithoutHash.Substring(2, 2), 16), Convert.ToByte(brushWithoutHash.Substring(4, 2), 16), Convert.ToByte(brushWithoutHash.Substring(6, 2), 16));
3条答案
按热度按时间zysjyyx41#
您无法将笔刷转换为颜色。笔刷的概念无法简化为颜色,因为它可能是颜色的渐层,或是影像等等。
这种转换只对SolidColorBrush的特殊情况有意义。我猜这就是你所追求的。下面是你在代码中如何做的:
感谢Stefan Wick - Windows开发人员平台
vm0i2vca2#
你可以将Brush转换为颜色,但是你必须明确地写出来。要做到这一点,只需这样做:
只要您正确地指定***Background***属性,**每一个 UIElement 都适用。
vktxenjb3#
如果要将其转换为字符串,然后将字符串转换为字节,再将字节转换为颜色,则有一种解决方法:
在最后一行中,您获取十六进制字符串值并将其转换为字节。
确保你的画笔是由一种单一的颜色组成的,而不是空的,否则你会得到一个异常。