convertir de color a pincel

110

¿Cómo convierto Colora Brushen C #?

kartal
fuente

Respuestas:

139

Esto es para Colorque Brush....

no puedes convertirlo, tienes que hacer un nuevo pincel ...

SolidColorBrush brush = new SolidColorBrush( myColor );

ahora, si lo necesita en XAML, PODRÍA hacer un convertidor de valor personalizado y usarlo en un enlace

Muad'Dib
fuente
8
Para compatibilidad con versiones anteriores, sería mejor usar SolidBrush( System.Drawing), que está disponible desde .NET Framework 1.1, en lugar de SolidColorBrush( System.Windows.Media), disponible a partir de .NET Framework 3.0.
BillyJoe
35
Brush brush = new SolidColorBrush(color);

Al revés:

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

O algo así.

El punto es que no todos los pinceles son colores, pero puede convertir todos los colores en un pincel (SolidColor).

media pensión
fuente
¡Color para cepillar!
Raiserle
@raiserle: Para su información, el contenido de la pregunta solía ser I want to convert from Brush to Color in c#mientras que el título era al revés.
HB
25
SolidColorBrush brush = new SolidColorBrush( Color.FromArgb(255,255,139,0) )
TruthOf42
fuente
18

puedes usar esto:

new SolidBrush(color)

donde el color es algo como esto:

Color.Red

o

Color.FromArgb(36,97,121))

o ...

Omid-RH
fuente
2
Para compatibilidad con versiones anteriores, esta respuesta es mejor, porque SolidBrush( System.Drawing) está disponible desde .NET Framework 1.1, mientras que SolidColorBrush( System.Windows.Media) está disponible a partir de .NET Framework 3.0.
BillyJoe
2

Tuve el mismo problema antes, aquí está mi clase que resolvió las conversiones de color Úselo y disfrute:

Aquí tienes, usa mi clase para la conversión de varios colores

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
fuente
1

Si trabaja con una aplicación que tiene una combinación de Windows Forms y WPF, es posible que tenga la complicación adicional de intentar convertir un System.Drawing.Color en un System.Windows.Media.Color. No estoy seguro de si hay una manera más fácil de hacer esto, pero lo hice de esta manera:

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

Luego, puede utilizar una de las técnicas mencionadas anteriormente para convertir en un Pincel.

Jerry Pile
fuente
0

A menudo es suficiente usar el pincel de hermanos o padres para este propósito, y eso está fácilmente disponible en wpf recuperando su propiedad de primer plano o fondo.

ref: Control.Background

Alexey Khoroshikh
fuente