Câu trả lời:
Brush brush = new SolidColorBrush(color);
Cách khác xung quanh:
if (brush is SolidColorBrush colorBrush)
Color color = colorBrush.Color;
Hoặc điều tương tự.
Điểm không phải tất cả các cọ đều là màu nhưng bạn có thể biến tất cả các màu thành một Brush (SolidColor).
I want to convert from Brush to Color in c#
trong khi tiêu đề thì ngược lại.
bạn có thể sử dụng cái này:
new SolidBrush(color)
nơi mà màu sắc là một cái gì đó như thế này:
Color.Red
hoặc là
Color.FromArgb(36,97,121))
hoặc là ...
SolidBrush
( System.Drawing
) có sẵn kể từ .NET Framework 1.1, trong khi SolidColorBrush
( System.Windows.Media
) khả dụng bắt đầu từ .NET Framework 3.0.
Tôi đã gặp vấn đề tương tự trước đây, đây là lớp học của tôi đã giải quyết các chuyển đổi màu sắc Hãy sử dụng nó và tận hưởng:
Đây là cách sử dụng Lớp học của tôi để chuyển đổi nhiều màu
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);
}
}
}
Nếu bạn tình cờ làm việc với một ứng dụng có sự kết hợp giữa Windows Forms và WPF, bạn có thể gặp phải rắc rối bổ sung khi cố gắng chuyển đổi System.Drawing.Color thành System.Windows.Media.Color. Tôi không chắc có cách nào dễ dàng hơn để làm điều này hay không, nhưng tôi đã làm theo cách này:
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);
}
Sau đó, bạn có thể sử dụng một trong các kỹ thuật đã đề cập trước đó để chuyển đổi sang Brush.
Thường là đủ để sử dụng brush của anh chị em hoặc cha mẹ cho mục đích và điều đó dễ dàng có sẵn trong wpf thông qua việc truy xuất thuộc tính Foreground hoặc Background của họ.
ref: Control.Background
SolidBrush
(System.Drawing
), có sẵn kể từ .NET Framework 1.1, thay vìSolidColorBrush
(System.Windows.Media
), có sẵn bắt đầu từ .NET Framework 3.0.