Использование цветов CMYK в WPF/XAML
Вопрос
Есть ли способ указать CMYK Цвета непосредственно в документе XAML?
Префикс их символом # создаст цвета RGB, но как указать цвет CMYK?
Некоторые примечания:
- Вопрос в том Не о преобразовании от CMYK до RGB, но для использования реального CMYK
- Цель состоит в том, чтобы разрешить сгенерировать XPS Документы (с использованием system.windows.xps.packaging, например) см. Цвет как cmyk и генерируют цветные коды как «contextcolor /swopcmykprofile.icc a, b, c, d, e» не как «#aarrggbb»
Я пытался определить цвета CMYK, используя ColorContext без какого -либо успеха.
Решение
ОК, ОК! Это оказалось намного проще, чем я, хотя: CMYK доступен непосредственно в XAML:
<Grid Background="ContextColor file://C:/WINDOWS/system32/spool/drivers/color/EuroscaleCoated.icc 1.0,0.0,0.0,1.0,1.0">
Другие советы
ХОРОШО! Я нашел ответ:
То, как WPF использует цветные модели, находится System.Windows.Media.Color
Статический конструктор FromValues()
и представление цветового профиля:
Например, следующий код:
var c = Color.FromValues(
new float[] {1.0f,0.0f,0.0f,0.0f } ,
new Uri("file://C:/ICCProfile.icc", UriKind.Absolute));
Создает 100% голубого цвета.
Профили можно скачать с http://www.eci.org/doku.php?id=en:start
Я проверил это решение с XPSDocumentWriter и подтверждаю, что оно создает правильный цветовой код CMYK.
Для XAML это просто вопрос строительства IValueConverter
Это преобразует что -то вроде "~ c, m, y, k" (как #rrggbb для RGB) в настоящий CMYK Color.