7 ответов:
Это
ColortoBrush....вы не можете преобразовать его, вы должны сделать новую кисть....
SolidColorBrush brush = new SolidColorBrush( myColor );Теперь, если вам это нужно в XAML, вы можете сделать пользовательский конвертер значений и использовать его в привязке
Brush brush = new SolidColorBrush(color);
иначе:
if (brush is SolidColorBrush) { Color color = (brush as SolidColorBrush).Color; }или что-то в этом роде.
точка не все кисти цвета, но вы можете превратить все цвета в (SolidColor)кисти.
вы можете использовать это:
new SolidBrush(color)где цвет-это что-то вроде этого:
Color.Redили
Color.FromArgb(36,97,121))или ...
Если вы работаете с приложением, которое имеет сочетание Windows Forms и WPF, у вас может возникнуть дополнительное осложнение при попытке преобразовать систему.Рисунок.Цвет для системы.Окна.Сми.Цвет. Я не уверен, если есть более простой способ сделать это, но я сделал это так:
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); }затем вы можете использовать один из методов, упомянутых ранее, чтобы преобразовать в кисть.
У меня была такая же проблема раньше, вот мой класс, который решил преобразования цвета Используйте его и наслаждайтесь:
здесь вы идете, используйте мой класс для многоцветного преобразования
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); } } }
часто достаточно использовать кисть брата или родителя для этой цели, и это легко доступно в wpf путем извлечения их свойства переднего плана или фона.
ref:управление.Фон
Comments