在WPF / XAML中使用CMYK颜色

时间:2011-01-28 10:40:21

标签: wpf xaml colors xps cmyk

有没有办法直接在XAML文档中指定 CMYK 颜色?

为它们添加#字符前缀将创建RGB颜色,但如何指定CMYK颜色?

一些注意事项:

  1. 问题是不是将从CMYK转换为RGB而是使用真正的CMYK
  2. 目的是允许生成的 XPS 文档(例如使用System.Windows.Xps.Packaging)将颜色视为CMYK并生成颜色代码为“ContextColor /swopcmykprofile.icc a,b, c,d,e“not as”#aarrggbb“
  3. 我尝试使用ColorContext定义CMYK颜色但没有任何成功。

2 个答案:

答案 0 :(得分:7)

再次确定! 结果比我想象的容易得多: CMYK可直接在XAML中使用:

<Grid Background="ContextColor file://C:/WINDOWS/system32/spool/drivers/color/EuroscaleCoated.icc 1.0,0.0,0.0,1.0,1.0">

答案 1 :(得分:6)

OK!我找到了答案:

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”(RGB的#RRGGBB)转换为真实 CMYK颜色。