Using CMYK colours in WPF/XAML

醉酒当歌 提交于 2019-11-27 18:14:10

问题


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:

  1. The question is NOT about converting from CMYK to RGB but to use real CMYK
  2. 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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!