[英]How to convert from System.Drawing.Color to System.Windows.Media.Color?
如何在这两种颜色类型之间进行转换?
You can see examples of both of the conversion directions below:您可以在下面看到两个转换方向的示例:
Drawing.Color
to Windows.Media.Color
Drawing.Color
到Windows.Media.Color
// This is your color to convert from
System.Drawing.Color color;
System.Windows.Media.Color newColor = System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B);
Windows.Media.Color
to Drawing.Color
Windows.Media.Color
到Drawing.Color
// This is your color to convert from
System.Windows.Media.Color color;
System.Drawing.Color newColor = System.Drawing.Color.FromArgb(color.A, color.R, color.G, color.B);
For frequent use i suggest helper like this:对于经常使用,我建议这样的助手:
using SDColor = System.Drawing.Color;
using SWMColor = System.Windows.Media.Color;
namespace ColorHelper
{
public static class ColorExt
{
public static SWMColor ToSWMColor(this SDColor color) => SWMColor.FromArgb(color.A, color.R, color.G, color.B);
public static SDColor ToSDColor(this SWMColor color) => SDColor.FromArgb(color.A, color.R, color.G, color.B);
}
}
... or use @Rion Williams answer as an extension: ...或使用@Rion Williams 回答作为扩展:
public static System.Windows.Media.Brush ToBrush(this System.Drawing.Color color)
{
return new System.Windows.Media.SolidColorBrush(System.Windows.Media.Color.FromArgb(color.A, color.R, color.G, color.B));
}
This is what I use:这是我使用的:
using System.Runtime.CompilerServices;
using System.Windows.Media;
namespace HQ.Wpf.Util
{
public static class ColorExtension
{
/// <summary>
/// Convert Media Color (WPF) to Drawing Color (WinForm)
/// </summary>
/// <param name="mediaColor"></param>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static System.Drawing.Color ToDrawingColor(this System.Windows.Media.Color mediaColor)
{
return System.Drawing.Color.FromArgb(mediaColor.A, mediaColor.R, mediaColor.G, mediaColor.B);
}
/// <summary>
/// Convert Drawing Color (WPF) to Media Color (WinForm)
/// </summary>
/// <param name="drawingColor"></param>
/// <returns></returns>
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public static System.Windows.Media.Color ToMediaColor(this System.Drawing.Color drawingColor)
{
return System.Windows.Media.Color.FromArgb(drawingColor.A, drawingColor.R, drawingColor.G, drawingColor.B);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.