Antworten:
Dies ist für Color
zu Brush
....
du kannst es nicht konvertieren, du musst einen neuen Pinsel machen ....
SolidColorBrush brush = new SolidColorBrush( myColor );
Wenn Sie es jetzt in XAML benötigen, KÖNNEN Sie einen benutzerdefinierten Wertekonverter erstellen und diesen in einer Bindung verwenden
Brush brush = new SolidColorBrush(color);
Umgekehrt:
if (brush is SolidColorBrush colorBrush)
Color color = colorBrush.Color;
Oder etwas ähnliches.
Da nicht alle Pinsel Farben sind, können Sie alle Farben in einen (SolidColor) Pinsel verwandeln.
I want to convert from Brush to Color in c#
während der Titel umgekehrt war.
Sie können dies verwenden:
new SolidBrush(color)
wo Farbe so etwas ist:
Color.Red
oder
Color.FromArgb(36,97,121))
oder ...
SolidBrush
( System.Drawing
) seit .NET Framework 1.1 verfügbar ist, während SolidColorBrush
( System.Windows.Media
) ab .NET Framework 3.0 verfügbar ist.
Ich hatte das gleiche Problem zuvor, hier ist meine Klasse, die Farbkonvertierungen gelöst hat. Verwenden Sie es und genießen Sie:
Hier, geh, benutze meine Klasse zur Mehrfarbenkonvertierung
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);
}
}
}
Wenn Sie zufällig mit einer Anwendung arbeiten, die eine Mischung aus Windows Forms und WPF enthält, besteht möglicherweise die zusätzliche Schwierigkeit, eine System.Drawing.Color in eine System.Windows.Media.Color zu konvertieren. Ich bin mir nicht sicher, ob es einen einfacheren Weg gibt, aber ich habe es so gemacht:
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);
}
Anschließend können Sie eine der zuvor genannten Techniken verwenden, um in einen Pinsel zu konvertieren.
Oft reicht es aus, den Pinsel von Geschwistern oder Eltern für diesen Zweck zu verwenden, und dies ist in wpf leicht verfügbar, indem die Eigenschaften Vordergrund oder Hintergrund abgerufen werden.
ref: Control.Background
SolidBrush
(System.Drawing
) zu verwenden, das seit .NET Framework 1.1 verfügbar ist, anstelle vonSolidColorBrush
(System.Windows.Media
), das ab .NET Framework 3.0 verfügbar ist.