wake-up-neo.com

konvertieren Sie von Farbe zu Pinsel

Wie konvertiere ich eine Color in eine Brush in C #?

86
kartal

Dies ist für Color bis Brush....

sie können es nicht umwandeln, Sie müssen einen neuen Pinsel erstellen ....

SolidColorBrush brush = new SolidColorBrush( myColor );

wenn Sie es jetzt in XAML benötigen, KÖNNEN Sie einen benutzerdefinierten Wertkonverter erstellen und diesen in einer Bindung verwenden

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

Umgekehrt:

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

Oder sowas ähnliches.

Es kann sein, dass nicht alle Pinsel Farben sind, aber Sie können aus allen Farben einen (SolidColor) Pinsel machen.

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

sie können dies verwenden:

new SolidBrush(color)

wo Farbe so etwas ist:

Color.Red

oder

Color.FromArgb(36,97,121))

oder ...

13
Omid-RH

Ich hatte das gleiche Problem schon einmal, hier ist meine Klasse, die Farbkonvertierungen gelöst hat.

Hier, gehen Sie, verwenden Sie meine Klasse für die 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);
        }
    }

}
1

Wenn Sie mit einer Anwendung arbeiten, die eine Mischung aus Windows Forms und WPF enthält, haben Sie möglicherweise die zusätzliche Schwierigkeit, eine System.Drawing.Color in eine System.Windows.Media.Color ..__ 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);
}

Dann können Sie eine der zuvor genannten Techniken verwenden, um in einen Pinsel zu konvertieren.

1
Jerry Pile

Es reicht oft aus, den Pinsel eines Geschwisters oder eines Elternteils für diesen Zweck zu verwenden. Dies ist in wpf durch Abrufen der Foreground- oder Background-Eigenschaft leicht verfügbar.

ref: Control.Background

0