convertire da Colore a pennello


110

Come si converte a Colorin a Brushin C #?

Risposte:


139

Questo è per Colora Brush....

non puoi convertirlo, devi fare un nuovo pennello ...

SolidColorBrush brush = new SolidColorBrush( myColor );

ora, se ne hai bisogno in XAML, POTRESTI creare un convertitore di valori personalizzato e utilizzarlo in un'associazione


8
Per compatibilità con le versioni precedenti, sarebbe meglio usare SolidBrush( System.Drawing), disponibile da .NET Framework 1.1, invece di SolidColorBrush( System.Windows.Media), disponibile a partire da .NET Framework 3.0.
BillyJoe

35
Brush brush = new SolidColorBrush(color);

Viceversa:

if (brush is SolidColorBrush colorBrush)
    Color color = colorBrush.Color;

O qualcosa di simile.

Il punto è che non tutti i pennelli sono colori, ma puoi trasformare tutti i colori in un pennello (SolidColor).


Colore a pennello!
Raiserle

@raiserle: Per tua informazione, il contenuto della domanda era I want to convert from Brush to Color in c#mentre il titolo era il contrario.
HB

25
SolidColorBrush brush = new SolidColorBrush( Color.FromArgb(255,255,139,0) )

18

puoi usare questo:

new SolidBrush(color)

dove il colore è qualcosa del genere:

Color.Red

o

Color.FromArgb(36,97,121))

o ...


2
Per compatibilità con le versioni precedenti, questa risposta è migliore, perché SolidBrush( System.Drawing) è disponibile da .NET Framework 1.1, mentre SolidColorBrush( System.Windows.Media) è disponibile a partire da .NET Framework 3.0.
BillyJoe

2

Ho avuto lo stesso problema prima, ecco la mia classe che ha risolto le conversioni di colore Usalo e divertiti:

Ecco qua, usa la mia classe per la conversione 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

Se ti capita di lavorare con un'applicazione che ha una combinazione di Windows Form e WPF, potresti avere l'ulteriore complicazione di provare a convertire un System.Drawing.Color in un System.Windows.Media.Color. Non sono sicuro che ci sia un modo più semplice per farlo, ma l'ho fatto in questo modo:

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

Quindi puoi utilizzare una delle tecniche menzionate in precedenza per convertire in un pennello.


0

Spesso è sufficiente utilizzare il pennello del fratello o del genitore per lo scopo, ed è facilmente disponibile in wpf tramite il recupero della loro proprietà Primo piano o Sfondo.

rif: Control.Background

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.