问题
Is there any way to specify CMYK colours directly in a XAML document?
prefixing them with # character will create RGB colours, but how to specify a CMYK colour?
Some notes:
- The question is NOT about converting from CMYK to RGB but to use real CMYK
- The purpose is to allow generated XPS documents (using System.Windows.Xps.Packaging for example) see the colour as CMYK and generate colour codes as "ContextColor /swopcmykprofile.icc a,b,c,d,e" not as "#aarrggbb"
I have tried to define CMYK colours by using ColorContext without any success.
回答1:
OK again! It turned out to be much more easier than what I though: CMYK is directly usable in XAML:
<Grid Background="ContextColor file://C:/WINDOWS/system32/spool/drivers/color/EuroscaleCoated.icc 1.0,0.0,0.0,1.0,1.0">
回答2:
OK! I found the answer:
The way that WPF uses colour models is by System.Windows.Media.Color
's static constructor FromValues()
and introducing a colour profile:
The following code, for example:
var c = Color.FromValues(
new float[] {1.0f,0.0f,0.0f,0.0f } ,
new Uri("file://C:/ICCProfile.icc", UriKind.Absolute));
creates a 100% Cyan colour.
Profiles can be downloaded from http://www.eci.org/doku.php?id=en:start
I tested this solution with XpsDocumentWriter and I confirm that it creates the correct CMYK colour code.
For XAML it is just the matter of building an IValueConverter
that converts something like "~C,M,Y,K" (as #RRGGBB for RGB) to a real CMYK colour.
来源:https://stackoverflow.com/questions/4827270/using-cmyk-colours-in-wpf-xaml