Подтвердить что ты не робот

В чем разница между System.Drawing.Color и System.Windows.Media.Color?

В принципе, зачем нужны две абстракции довольно простой концепции?

4b9b3361

Ответ 1

System.Windows.Media.Color является частью пространства System.Windows.Media:

Предоставляет типы, которые позволяют интегрировать мультимедийные материалы, включая чертежи, текст и аудио/видеоконтент в приложениях Windows Presentation Foundation (WPF).

System.Drawing.Color является частью пространства System.Drawing:

Пространство имен System.Drawing обеспечивает доступ к функциональным возможностям GDI + базовой графики. Более расширенные функции предоставляются в пространствах имен System.Drawing.Drawing2D, System.Drawing.Imaging и System.Drawing.Text.

Я предполагаю, что последнее относится к Windows, в то время как первое является более общим и более легко переносимым для Mac OS и т.д. для использования в приложениях Silverlight.

Существует также эта осторожность в последнем пространстве имен, которое будет поддерживать это:

Классы в пространстве имен System.Drawing не поддерживаются для использования в службе Windows или ASP.NET. Попытка использования этих классов из одного из этих типов приложений может вызвать непредвиденные проблемы, такие как снижение производительности службы и исключений во время выполнения.

Ответ 2

Я не думаю, что существует "необходимость" как таковая, только что они сделали раннее (возможно, неправильное) решение поместить класс Color в WinForms-specific System.Drawing - потому что в то время Win32 и Winforms были все, что было.

Позже, когда они хотели улучшить концепции в "Цвет", они не хотели, чтобы WPF зависел от WinForms. Поэтому вместо того, чтобы исправить ситуацию, переместив более абстрактный класс Color в общую сборку, они просто скопировали новый класс Color в WPF.