Réponses:
Ceci est pour Color
la Brush
....
vous ne pouvez pas le convertir, vous devez créer un nouveau pinceau ...
SolidColorBrush brush = new SolidColorBrush( myColor );
maintenant, si vous en avez besoin en XAML, vous POUVEZ créer un convertisseur de valeur personnalisé et l'utiliser dans une liaison
Brush brush = new SolidColorBrush(color);
L'inverse:
if (brush is SolidColorBrush colorBrush)
Color color = colorBrush.Color;
Ou quelque chose comme ça.
Le point étant que tous les pinceaux ne sont pas des couleurs, mais vous pouvez transformer toutes les couleurs en un pinceau (SolidColor).
I want to convert from Brush to Color in c#
alors que le titre était l'inverse.
vous pouvez utiliser ceci:
new SolidBrush(color)
où la couleur est quelque chose comme ça:
Color.Red
ou
Color.FromArgb(36,97,121))
ou ...
SolidBrush
( System.Drawing
) est disponible depuis .NET Framework 1.1, tandis que SolidColorBrush
( System.Windows.Media
) est disponible à partir de .NET Framework 3.0.
J'ai eu le même problème avant, voici ma classe qui a résolu les conversions de couleurs Utilisez-le et profitez-en:
Here U go, Use my Class to Multi Color Conversion
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);
}
}
}
Si vous travaillez avec une application qui a un mélange de Windows Forms et WPF, vous pourriez avoir la complication supplémentaire d'essayer de convertir un System.Drawing.Color en System.Windows.Media.Color. Je ne sais pas s'il existe un moyen plus simple de le faire, mais je l'ai fait de cette façon:
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);
}
Ensuite, vous pouvez utiliser l'une des techniques mentionnées précédemment pour convertir en pinceau.
Il est souvent suffisant d'utiliser le pinceau du frère ou du parent à cette fin, et c'est facilement disponible dans wpf via la récupération de leur propriété Foreground ou Background.
réf: Control.Background
SolidBrush
(System.Drawing
), disponible depuis .NET Framework 1.1, au lieu deSolidColorBrush
(System.Windows.Media
), disponible à partir de .NET Framework 3.0.