System.Drawing.Color和System.Windows.Media.Color有什么区别?

时间:2010-03-11 21:45:17

标签: .net

基本上,为什么需要两个非常简单概念的抽象?

2 个答案:

答案 0 :(得分:17)

System.Windows.Media.ColorSystem.Windows.Media命名空间的一部分:

  

提供可在Windows Presentation Foundation(WPF)应用程序中集成富媒体(包括绘图,文本和音频/视频内容)的类型。

System.Drawing.ColorSystem.Drawing命名空间的一部分:

  

System.Drawing命名空间提供对GDI +基本图形功能的访问。 System.Drawing.Drawing2D,System.Drawing.Imaging和System.Drawing.Text命名空间中提供了更高级的功能。

我猜测后者是特定于Windows的,而前者更为通用,更容易移植到Mac OS等,以便在Silverlight应用程序中使用。

对后一个命名空间也有这种谨慎,它倾向于支持这一点:

  

不支持在Windows或ASP.NET服务中使用System.Drawing命名空间中的类。尝试在其中一种应用程序类型中使用这些类可能会产生意外问题,例如服务性能下降和运行时异常。

答案 1 :(得分:8)

我不认为有这样的“需要”,只是他们做出了一个早期(可能是错误的)决定将Color类放入WinForms特定的System.Drawing中 - 因为当时,Win32和Winforms就是这样。

后来当他们想要增强“Color”中的概念时,他们不希望WPF依赖WinForms。因此,不是通过将更抽象的Color类移动到通用程序集来修复这种情况,而是只是在WPF中复制粘贴一个新的Color类。