2010-03-11 9 views
26

Básicamente, ¿por qué la necesidad de dos abstracciones de un concepto bastante simple?¿Cuál es la diferencia entre System.Drawing.Color y System.Windows.Media.Color?

+1

WPF vs Window Forms. Dos capas de interfaz de usuario, dos conjuntos de definiciones. –

+1

Para confundir esto aún más, me he dado cuenta de que las propiedades de tipo Brush en WPF/Silverlight eligen valores en el diseñador de System.Drawing.Color (que no están disponibles en System.Windows.Media.Color), a pesar de que este espacio de nombres no está disponible para Silverlight. –

+0

Lo que me confunde aún más es que System.Drawing.Color tiene mucha más funcionalidad en sus métodos (por ejemplo, FromArgb tiene varias sobrecargas) que System.Windows.Media.Color. – jep

Respuesta

15

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

proporciona tipos que permiten la integración de los medios ricos, incluyendo dibujos, texto y contenido de audio/vídeo en Windows Presentation Foundation (WPF) aplicaciones.

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

El espacio de nombres System.Drawing proporciona acceso a GDI + funcionalidad básica de gráficos. 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 es más fácil de transportar a Mac OS, etc. para su uso en aplicaciones de Silverlight.

Se da también una advertencia sobre este último espacio de nombres que tendería a apoyar esta:

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

+3

Si bien es técnicamente cierto, no responde a la pregunta más fundamental de por qué Microsoft decidió que el concepto de color tenía que estar vinculado a los gráficos. –

8

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

Más tarde, cuando querían mejorar los conceptos en "Color", no querían que WPF dependiera de WinForms. Entonces, 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.

Cuestiones relacionadas