von Farbe in Pinsel konvertieren

110

Wie konvertiere ich a Color in a Brushin C #?

kartal
quelle

Antworten:

139

Dies ist für Colorzu 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

Muad'Dib
quelle
8
Aus Gründen der Abwärtskompatibilität ist es besser, SolidBrush( System.Drawing) zu verwenden, das seit .NET Framework 1.1 verfügbar ist, anstelle von SolidColorBrush( System.Windows.Media), das ab .NET Framework 3.0 verfügbar ist.
BillyJoe
35
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.

HB
quelle
Farbe zum Bürsten!
Raiserle
@raiserle: Zu Ihrer Information, der Inhalt der Frage war früher, I want to convert from Brush to Color in c#während der Titel umgekehrt war.
HB
25
SolidColorBrush brush = new SolidColorBrush( Color.FromArgb(255,255,139,0) )
TruthOf42
quelle
18

Sie können dies verwenden:

new SolidBrush(color)

wo Farbe so etwas ist:

Color.Red

oder

Color.FromArgb(36,97,121))

oder ...

Omid-RH
quelle
2
Aus Gründen der Abwärtskompatibilität ist diese Antwort besser, da 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.
BillyJoe
2

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

}
Amin AmiriDarban
quelle
1

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.

Jerry Pile
quelle
0

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

Alexey Khoroshikh
quelle