2010-03-11 65 views
26

基本上,爲什麼需要兩個抽象的非常簡單的概念?System.Drawing.Color和System.Windows.Media.Color有什麼區別?

+1

WPF vs Window Forms。兩個UI層,兩組定義。 – 2010-03-11 21:59:28

+1

爲了進一步解決這個問題,我注意到WPF/Silverlight中的Brush類型屬性從System.Drawing.Color(它們在System.Windows.Media.Color中不可用)中選擇設計器中的值,儘管此名稱空間不可用Silverlight的。 – 2012-06-01 14:41:19

+0

讓我更加困惑的是,System.Drawing.Color在其方法中具有比System.Windows.Media.Color更多的功能(例如FromArgb有各種重載)。 – jep 2013-09-05 03:50:55

回答

15

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服務中使用不被支持。試圖從這些應用程序類型中使用這些類可能會產生意想不到的問題,例如服務性能下降和運行時異常。

+3

儘管技術上屬實,但它並沒有回答微軟爲什麼決定顏色概念必須鏈接到圖形中的更基本的問題。 – 2013-06-23 22:01:45

8

我不認爲有這樣的「需要」,只是他們做了一個早期的(可能是錯誤的)決定將Color類放入WinForms特定的System.Drawing中 - 因爲當時,Win32和Winforms都是。

後來,當他們想要增強「顏色」中的概念時,他們不希望WPF依賴於WinForms。因此,他們不是通過將更抽象的Color類移動到通用程序集來解決問題,而是在WPF中複製粘貼了一個新的Color類。