web-dev-qa-db-fra.com

convertir de couleur en pinceau

Comment convertir une Color en une Brush en C #?

86
kartal

Ceci est pour Color à 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

115
Muad'Dib
Brush brush = new SolidColorBrush(color);

L'inverse:

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

Ou quelque chose comme ça.

Les points qui ne sont pas tous des pinceaux sont des couleurs, mais vous pouvez transformer toutes les couleurs en pinceau (SolidColor).

32
H.B.
SolidColorBrush brush = new SolidColorBrush( Color.FromArgb(255,255,139,0) )
19
TruthOf42

vous pouvez utiliser ceci:

new SolidBrush(color)

où la couleur ressemble à ceci:

Color.Red

ou

Color.FromArgb(36,97,121))

ou ...

13
Omid-RH

J'avais le même problème auparavant, voici mon cours qui a résolu les conversions de couleurs Utilisez-le et profitez de:

Ici, allez, utilisez ma classe pour la conversion multicolore 

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
Amin AmiriDarban

Si vous travaillez avec une application combinant Windows Forms et WPF, vous aurez peut-être le problème supplémentaire de convertir un System.Drawing.Color en un System.Windows.Media.Color .. Je ne sais pas s'il existe un moyen plus facile de le faire, mais je l'ai fait comme suit:

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 un pinceau.

1
Jerry Pile

Il est souvent suffisant d’utiliser le pinceau des frères et sœurs à cette fin, et cela est facilement disponible dans wpf en récupérant leur propriété Foreground ou Background.

ref: Control.Background

0