.net

.net - ¿Cuál es la diferencia entre System.Drawing.Color y System.Windows.Media.Color?



(2)

No creo que haya una "necesidad" como tal, solo que tomaron una decisión temprana (probablemente incorrecta) de colocar la clase de Color en el sistema específico de WinForms. Dibujar, porque en ese momento, Win32 y Winforms eran todo había.

Más tarde, cuando querían mejorar los conceptos en "Color", no querían que WPF dependiera de WinForms. Así que en lugar de arreglar la situación moviendo una clase de color más abstracta a un ensamblaje genérico, simplemente copiaron y pegaron una nueva clase de color en WPF.

Básicamente, ¿por qué la necesidad de dos abstracciones de un concepto bastante simple?


System.Windows.Media.Color es parte del espacio de nombres System.Windows.Media :

Proporciona tipos que permiten la integración de medios enriquecidos, incluidos dibujos, texto y contenido de audio / video en aplicaciones de Windows Presentation Foundation (WPF).

System.Drawing.Color es parte del espacio de nombres System.Drawing :

El espacio de nombres System.Drawing proporciona acceso a la funcionalidad de gráficos básicos de GDI +. Se proporciona una funcionalidad más avanzada en los espacios de nombres System.Drawing.Drawing2D, System.Drawing.Imaging y System.Drawing.Text.

Supongo que este último es específico de Windows, mientras que el primero es más general y se puede transportar más fácilmente a Mac OS, etc. para usar en aplicaciones Silverlight.

También existe esta precaución en el último espacio de nombres que tendería a admitir esto:

Las clases dentro del espacio de nombres System.Drawing no son compatibles para su uso dentro de un servicio de Windows o ASP.NET. Intentar usar estas clases desde uno de estos tipos de aplicaciones puede producir problemas inesperados, como la disminución del rendimiento del servicio y las excepciones en tiempo de ejecución.