Respuestas:
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).
I want to convert from Brush to Color in c#
mientras que el título era al revés.
puedes usar esto:
new SolidBrush(color)
donde el color es algo como esto:
Color.Red
o
Color.FromArgb(36,97,121))
o ...
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.
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);
}
}
}
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.
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
SolidBrush
(System.Drawing
), que está disponible desde .NET Framework 1.1, en lugar deSolidColorBrush
(System.Windows.Media
), disponible a partir de .NET Framework 3.0.