在 WPF/XAML 中使用 CMYK 颜色

发布于 2024-10-14 14:57:56 字数 367 浏览 9 评论 0原文

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

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

一些注意事项:

  1. 问题不是从 CMYK 转换为 RGB,而是使用真正的 CMYK
  2. 目的是允许生成 XPS 文档(使用 System.Windows.Xps.Packaging例如)将颜色视为 CMYK 并将颜色代码生成为“ContextColor /swopcmykprofile.icc a,b,c,d,e”而不是“#aarrggbb”

我尝试使用 ColorContext 定义 CMYK 颜色,但没有成功。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

小霸王臭丫头 2024-10-21 14:57:56

再次确定!
事实证明,这比我想象的要容易得多:
CMYK 可直接在 XAML 中使用:

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

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">
土豪 2024-10-21 14:57:56

好的!我找到了答案:

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颜色。

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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文