从颜色转换为画笔

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

这是为了Color Brush

你不能转换它,你必须做一个新的画笔….

 SolidColorBrush brush = new SolidColorBrush( myColor ); 

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

编辑:只注意到question-title != question ,所以回答标题:

 Brush brush = new SolidColorBrush(color); 

另一种方式:

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

或类似的东西。

点不是所有的画笔都是颜色,但你可以把所有的颜色变成(SolidColor)画笔。

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

你可以使用这个:

 new SolidBrush(color) 

其中颜色是这样的:

 Color.Red 

要么

 Color.FromArgb(36,97,121)) 

要么 …

如果您碰巧正在使用具有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); } 

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

通常使用兄弟姐妹或父母的笔刷就足够了,而且通过检索其Foreground或Background属性可以很容易地在wpf中使用。

ref: Control.Background

我以前也有同样的问题,这里是我解决颜色转换的课程使用它并享受:

在这里,你走,用我的class级多颜色转换

 using System; using System.Windows.Media; using SDColor = System.Drawing.Color; using SWMColor = System.Windows.Media.Color; using SWMBrush = System.Windows.Media.Brush; //Developed by امین امیری دربان namespace APREndUser.CodeAssist { public static class ColorHelper { public static SWMColor ToSWMColor(SDColor color) => SWMColor.FromArgb(color.A, color.R, color.G, color.B); public static SDColor ToSDColor(SWMColor color) => SDColor.FromArgb(color.A, color.R, color.G, color.B); public static SWMBrush ToSWMBrush(SDColor color) => (SolidColorBrush)(new BrushConverter().ConvertFrom(ToHexColor(color))); public static string ToHexColor(SDColor c) => "#" + cRToString("X2") + cGToString("X2") + cBToString("X2"); public static string ToRGBColor(SDColor c) => "RGB(" + cRToString() + "," + cGToString() + "," + cBToString() + ")"; public static Tuple<SDColor, SDColor> GetColorFromRYGGradient(double percentage) { var red = (percentage > 50 ? 1 - 2 * (percentage - 50) / 100.0 : 1.0) * 255; var green = (percentage > 50 ? 1.0 : 2 * percentage / 100.0) * 255; var blue = 0.0; SDColor result1 = SDColor.FromArgb((int)red, (int)green, (int)blue); SDColor result2 = SDColor.FromArgb((int)green, (int)red, (int)blue); return new Tuple<SDColor, SDColor>(result1, result2); } } }