Usando colores CMYK en WPF/XAML
Pregunta
¿Hay alguna forma de especificar? Cmyk ¿Coloros directamente en un documento XAML?
El prefijo con el personaje # creará colores RGB, pero ¿cómo especificar un color CMYK?
Algunas notas:
- La pregunta es No se trata de convertir De CMYK a RGB pero para usar CMYK real
- El propósito es permitir generar XPS Documentos (usando System.windows.xps.packaging, por ejemplo), vea el color como CMYK y genere códigos de color como "contextcolor /swopcmykprofile.icc A, B, C, D, E" no como "#aarrggbb"
He tratado de definir los colores CMYK usando ColorContext sin ningún éxito.
Solución
¡Ok de nuevo! Resultó ser mucho más fácil de lo que yo: CMYK se puede usar directamente en XAML:
<Grid Background="ContextColor file://C:/WINDOWS/system32/spool/drivers/color/EuroscaleCoated.icc 1.0,0.0,0.0,1.0,1.0">
Otros consejos
¡OK! Encontré la respuesta:
La forma en que WPF usa modelos de color es por System.Windows.Media.Color
Constructor estático FromValues()
e introducir un perfil de color:
El siguiente código, por ejemplo:
var c = Color.FromValues(
new float[] {1.0f,0.0f,0.0f,0.0f } ,
new Uri("file://C:/ICCProfile.icc", UriKind.Absolute));
Crea un color 100% cian.
Los perfiles se pueden descargar desde http://www.eci.org/doku.php?id=en:start
Probé esta solución con XPSDocumentWriter y confirmo que crea el código de color CMYK correcto.
Para Xaml es solo la cuestión de construir un IValueConverter
que convierte algo como "~ c, m, y, k" (como #rrggbb para rgb) a un real Color cmyk.