从颜色转换为画笔


110

如何在C#中将Colora 转换为a Brush

Answers:


139

这是ColorBrush....

您无法将其转换,则必须制作一个新画笔。

SolidColorBrush brush = new SolidColorBrush( myColor );

现在,如果您在XAML中需要它,则可以制作一个自定义值转换器并将其用于绑定中


8
为了向后兼容,最好使用SolidBrushSystem.Drawing),它从.NET Framework 1.1 开始可用,而不是SolidColorBrushSystem.Windows.Media),它从.NET Framework 3.0开始可用。
比利

35
Brush brush = new SolidColorBrush(color);

另一种方式:

if (brush is SolidColorBrush colorBrush)
    Color color = colorBrush.Color;

或类似的东西。

要点不是所有画笔都是颜色,但是您可以将所有颜色变成(SolidColor)Brush。


颜色刷!
提升者

@raiserle:为您提供信息,问题的内容曾经是I want to convert from Brush to Color in c#标题,而标题则相反。
HB

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

18

您可以使用此:

new SolidBrush(color)

颜色是这样的:

Color.Red

要么

Color.FromArgb(36,97,121))

要么 ...


2
为了向后兼容,此答案更好,因为SolidBrush(。System.Drawing)从.NET Framework 1.1 开始可用,而SolidColorBrushSystem.Windows.Media)从.NET Framework 3.0开始可用。
比利

2

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

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

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) => "#" + c.R.ToString("X2") + c.G.ToString("X2") + c.B.ToString("X2");
        public static string ToRGBColor(SDColor c) => "RGB(" + c.R.ToString() + "," + c.G.ToString() + "," + c.B.ToString() + ")";
        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);
        }
    }

}

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);
}

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.