Как преобразовать Color
в Brush
в С#?
Конвертировать из цвета в кисть
Ответ 1
Это для Color
- Brush
....
вы не можете его преобразовать, вам нужно сделать новую кисть....
SolidColorBrush brush = new SolidColorBrush( myColor );
теперь, если вам это нужно в XAML, вы МОЖЕТЕ сделать собственный конвертер значений и использовать его в привязке
Ответ 2
Изменить: Только что заметил question-title != question
, чтобы ответить на заголовок:
Brush brush = new SolidColorBrush(color);
Другой способ:
if (brush is SolidColorBrush)
{
Color color = (brush as SolidColorBrush).Color;
}
Или что-то в этом роде.
Точка не всех кистей - это цвета, но вы можете превратить все цвета в кисть (SolidColor).
Ответ 3
SolidColorBrush brush = new SolidColorBrush( Color.FromArgb(255,255,139,0) )
Ответ 4
вы можете использовать это:
new SolidBrush(color)
где цвет выглядит примерно так:
Color.Red
или
Color.FromArgb(36,97,121))
или...
Ответ 5
Если вы работаете с приложением, в котором есть сочетание Windows Forms и WPF, у вас может возникнуть дополнительное усложнение при попытке конвертировать System.Drawing.Color в System.Windows.Media.Color. Я не уверен, есть ли более простой способ сделать это, но я сделал это следующим образом:
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);
}
Затем вы можете использовать один из методов, упомянутых ранее, для преобразования в кисть.
Ответ 6
Часто бывает достаточно использовать для этого родную кисть или родительскую кисть и легкодоступную в wpf путем получения их свойства Foreground или Background.
ref: Control.Background
Ответ 7
У меня была такая же проблема раньше, вот мой класс, который решил преобразование цвета Используйте его и наслаждайтесь:
Здесь U go, использование моего класса для многоцветного преобразования
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);
}
}
}