Yanıtlar:
Bu içindir Colorüzere Brush....
dönüştüremezsin, yeni bir fırça yapmalısın ...
SolidColorBrush brush = new SolidColorBrush( myColor );
şimdi, buna XAML'de ihtiyacınız varsa, özel bir değer dönüştürücü yapabilir ve bunu bir bağlamada kullanabilirsiniz
Brush brush = new SolidColorBrush(color);
Diğer taraftan:
if (brush is SolidColorBrush colorBrush)
Color color = colorBrush.Color;
Ya da böyle bir şey.
Tüm fırçalar renk değildir, ancak tüm renkleri bir (SolidColor) Fırçaya dönüştürebilirsiniz.
I want to convert from Brush to Color in c#, başlık tam tersi durumdayken kullanılırdı .
bunu kullanabilirsiniz:
new SolidBrush(color)
renk böyle bir şey olduğunda:
Color.Red
veya
Color.FromArgb(36,97,121))
veya ...
SolidBrush( System.Drawing), .NET Framework 1.1'den beri mevcutken SolidColorBrush( System.Windows.Media), .NET Framework 3.0'dan itibaren mevcuttur.
Daha önce de aynı sorunu yaşadım, işte renk dönüşümlerini çözen sınıfım Kullanın ve keyfini çıkarın:
İşte Başlayın, Sınıfımı Çok Renkli Dönüştürmeye Kullanın
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);
}
}
}
Windows Forms ve WPF karışımına sahip bir uygulamayla çalışıyorsanız, bir System.Drawing.Color'u System.Windows.Media.Color'a dönüştürmeye çalışmak gibi ek bir zorluk yaşayabilirsiniz. Bunu yapmanın daha kolay bir yolu olup olmadığından emin değilim, ama şu şekilde yaptım:
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);
}
Daha sonra, bir Brush'a dönüştürmek için daha önce bahsedilen tekniklerden birini kullanabilirsiniz.
Genellikle kardeşin veya ebeveynin fırçasını bu amaçla kullanmak yeterlidir ve bu, Ön Plan veya Arka Plan özelliklerini alarak wpf'de kolayca kullanılabilir.
ref: Control.Background
SolidBrush(System.Drawing) kullanmak daha iyi olacaktır .SolidColorBrushSystem.Windows.Media