📜  c# system.drawing.color 到 system.windows.media.color - C# (1)

📅  最后修改于: 2023-12-03 15:29:46.334000             🧑  作者: Mango

C# System.Drawing.Color 到 System.Windows.Media.Color

在 C# 的编程中,颜色是一个非常常用的元素。而在不同的类型之间也经常需要进行转换。本文将探讨如何在 System.Drawing.Color 和 System.Windows.Media.Color 之间进行转换。

System.Drawing.Color

System.Drawing.Color 是一个在 Windows 程序中被广泛使用的颜色类。它具有构造函数、属性和方法,可以方便地获取、设置和操作颜色。

构造函数

以下是 System.Drawing.Color 的构造函数:

public Color(int argb);
public Color(int r, int g, int b);
public Color(int r, int g, int b, int alpha);
public Color(KnownColor color);

第一个构造函数使用 ARGB 值创建颜色(A 表示 alpha 通道,R 表示红色通道,G 表示绿色通道,B 表示蓝色通道)。第二个构造函数使用 RGB 值创建颜色。第三个构造函数使用 RGBA 值创建颜色。最后一个构造函数使用预定义的颜色名创建颜色。

属性

以下是 System.Drawing.Color 的属性:

public int A { get; }
public int R { get; }
public int G { get; }
public int B { get; }

A、R、G 和 B 属性分别返回 alpha、红、绿和蓝通道的值。

方法

以下是 System.Drawing.Color 的方法:

public static Color FromArgb(int argb);
public static Color FromArgb(int alpha, int red, int green, int blue);
public static Color FromName(string name);

FromArgb 方法使用 ARGB 值创建颜色。FromName 方法使用预定义的颜色名创建颜色。

System.Windows.Media.Color

System.Windows.Media.Color 是一个在 WPF 应用程序中使用的颜色类。它也具有构造函数、属性和方法,但是它的 ARGB 值的顺序与 System.Drawing.Color 不同。

构造函数

以下是 System.Windows.Media.Color 的构造函数:

public Color();
public Color(byte red, byte green, byte blue);
public Color(byte alpha, byte red, byte green, byte blue);
public Color(int argb);

第一个构造函数创建一个表示透明颜色的 Color 对象。第二个构造函数使用 RGB 值创建颜色。第三个构造函数使用 RGBA 值创建颜色。最后一个构造函数使用 ARGB 值创建颜色。

属性

以下是 System.Windows.Media.Color 的属性:

public byte A { get; set; }
public byte R { get; set; }
public byte G { get; set; }
public byte B { get; set; }

A、R、G 和 B 属性分别返回或设置 alpha、红、绿和蓝通道的值。

方法

以下是 System.Windows.Media.Color 的方法:

public static Color FromArgb(int argb);
public static Color FromRgb(byte red, byte green, byte blue);
public static Color FromScRgb(float a, float r, float g, float b);

FromArgb 方法使用 ARGB 值创建颜色。FromRgb 方法使用 RGB 值创建颜色。FromScRgb 方法使用标准化的 sRGB 值创建颜色。

System.Drawing.Color 到 System.Windows.Media.Color 的转换

System.Drawing.Color 到 System.Windows.Media.Color 的转换非常简单,可以使用下面的代码:

System.Drawing.Color drawingColor = System.Drawing.Color.FromArgb(128, 255, 0, 0);
System.Windows.Media.Color mediaColor = System.Windows.Media.Color.FromArgb(drawingColor.A, drawingColor.R, drawingColor.G, drawingColor.B);

这里使用 System.Drawing.Color 的 FromArgb 方法创建一个颜色,然后使用 System.Windows.Media.Color 的 FromArgb 方法创建另一个颜色。

System.Windows.Media.Color 到 System.Drawing.Color 的转换

System.Windows.Media.Color 到 System.Drawing.Color 的转换也非常简单,可以使用下面的代码:

System.Windows.Media.Color mediaColor = System.Windows.Media.Color.FromArgb(128, 255, 0, 0);
System.Drawing.Color drawingColor = System.Drawing.Color.FromArgb(mediaColor.A, mediaColor.R, mediaColor.G, mediaColor.B);

这里使用 System.Windows.Media.Color 的 FromArgb 方法创建一个颜色,然后使用 System.Drawing.Color 的 FromArgb 方法创建另一个颜色。

结论

在 C# 的编程中,System.Drawing.Color 和 System.Windows.Media.Color 是两个常用的颜色类。虽然它们之间的 ARGB 值的顺序不同,但是它们之间的转换非常容易,可以使用 FromArgb 方法进行转换。当需要在不同的类型之间进行颜色转换时,这种方式非常有用。