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

mos*_*ald 31 .net

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

Chr*_*isF 18

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应用程序.

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

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

  • 虽然技术上是正确的,但它并没有回答更为根本的问题,即为什么微软决定将颜色概念与图形相关联. (4认同)

O'R*_*ney 9

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

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