【问题标题】:How to convert from System.Drawing.Color to System.Windows.Media.Color?如何从 System.Drawing.Color 转换为 System.Windows.Media.Color?
【发布时间】:2011-06-07 10:13:12
【问题描述】:

如何在这两种颜色类型之间进行转换?

【问题讨论】:

标签: c# colors


【解决方案1】:

您可以在下面查看两种转换方向的示例:

Drawing.ColorWindows.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.ColorDrawing.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);

【讨论】:

    【解决方案2】:

    ...或使用@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));
    }
    

    【讨论】:

      【解决方案3】:

      为了经常使用,我建议这样的助手:

      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);
          }
      }
      

      【讨论】:

        【解决方案4】:

        这是我用的:

        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);
                }
        

        【讨论】:

          猜你喜欢
          • 2011-06-04
          • 2011-05-05
          • 1970-01-01
          • 1970-01-01
          • 2016-11-23
          • 2011-01-26
          • 1970-01-01
          • 1970-01-01
          • 2023-03-30
          相关资源
          最近更新 更多