convertir de color a pincel


110

¿Cómo convierto Colora Brushen C #?

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


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).


¡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) )

18

puedes usar esto:

new SolidBrush(color)

donde el color es algo como esto:

Color.Red

o

Color.FromArgb(36,97,121))

o ...


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

}

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.


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

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.