Verwenden von CMYK -Farben in WPF/XAML
Frage
Gibt es eine Möglichkeit zum Angeben? CMYK Farben direkt in einem XAML -Dokument?
Wenn Sie sie mit # Charakter vorfixieren, werden RGB -Farben erzeugt, aber wie kann man eine CMYK -Farbe angeben?
Einige Notizen:
- Die Frage ist Nicht um konvertieren Von CMYK bis RGB, aber real CMYK zu verwenden
- Der Zweck ist, generiert zuzulassen XPS Dokumente (unter Verwendung von System.windows.xps.packaging) sehen die Farbe als CMYK und generieren Farbcodes als "contextcolor /wopcmykprofile.icc a, b, c, d, e" nicht als "#ARGRGGBB"
Ich habe versucht, CMYK -Farben mit ColorContext ohne Erfolg zu definieren.
Lösung
Wieder ok! Es stellte sich heraus, dass es viel einfacher war als ich: CMYK ist in XAML direkt verwendbar:
<Grid Background="ContextColor file://C:/WINDOWS/system32/spool/drivers/color/EuroscaleCoated.icc 1.0,0.0,0.0,1.0,1.0">
Andere Tipps
OK! Ich fand die Antwort:
Die Art und Weise, wie WPF Farbmodelle verwendet System.Windows.Media.Color
statischer Konstruktor FromValues()
und Einführung eines Farbprofils:
Der folgende Code zum Beispiel:
var c = Color.FromValues(
new float[] {1.0f,0.0f,0.0f,0.0f } ,
new Uri("file://C:/ICCProfile.icc", UriKind.Absolute));
schafft eine 100% Cyan -Farbe.
Profile können heruntergeladen werden http://www.eci.org/doku.php?id=en:Start
Ich habe diese Lösung mit XPSDocumentWriter getestet und bestätige, dass sie den richtigen CMYK -Farbcode erstellt.
Für XAML ist es nur die Frage, eine zu bauen IValueConverter
Das wandelt so etwas wie "~ C, m, y, k" (als #rrggbbbbbbbb) in a um real CMYK -Farbe.