从Color转换为brush

时间:2011-04-12 20:14:49

标签: c# wpf

如何在C#中将Color转换为Brush

7 个答案:

答案 0 :(得分:119)

这适用于ColorBrush ....

你不能转换它,你必须刷新......

SolidColorBrush brush = new SolidColorBrush( myColor );

现在,如果你在XAML中需要它,你可以制作一个自定义值转换器并在绑定中使用它

答案 1 :(得分:33)

Brush brush = new SolidColorBrush(color);

相反:

if (brush is SolidColorBrush)
{
    Color color = (brush as SolidColorBrush).Color;
}

或类似的东西。

并非所有画笔都是颜色,但您可以将所有颜色转换为(SolidColor)画笔。

答案 2 :(得分:20)

SolidColorBrush brush = new SolidColorBrush( Color.FromArgb(255,255,139,0) )

答案 3 :(得分:14)

你可以用这个:

new SolidBrush(color)

颜色是这样的:

Color.Red

Color.FromArgb(36,97,121))

或......

答案 4 :(得分:1)

如果您正在使用混合使用Windows窗体和WPF的应用程序,则可能会遇到尝试将System.Drawing.Color转换为System.Windows.Media.Color的额外复杂情况。 我不确定是否有更简单的方法可以做到这一点,但我是这样做的:

System.Drawing.Color MyColor = System.Drawing.Color.Red;
System.Windows.Media.Color = ConvertColorType(MyColor);

System.Windows.Media.Color ConvertColorType(System.Drawing.Color color)
{
  byte AVal = color.A;
  byte RVal = color.R;
  byte GVal = color.G;
  byte BVal = color.B;

  return System.Media.Color.FromArgb(AVal, RVal, GVal, BVal);
}

然后,您可以使用前面提到的技术之一转换为画笔。

答案 5 :(得分:1)

之前我遇到过同样的问题,这是我的课程,它解决了色彩转换问题 使用它并享受:

这里你去,使用我的班级进行多色转换

n = 5

if n%2 != 0:
    print('weird')
elif n%2 == 0 and 2 <= n <= 5:
    print("Not Weird")
elif n%2 == 0 and 6 <= n <= 20:
    print("Weird")
elif n%2 == 0 and n > 20:
    print("Not Weird")

答案 6 :(得分:0)

为此目的,通常可以使用兄弟姐妹或父母的刷子,并且可以通过检索其前景或背景属性在wpf中轻松获得。

参考:Control.Background