怎样实现字符分解并取得对应的值?
大可山人 博客专家认证 2006-05-09 12:02:49 比如:
Y100$Y90M80C15*Y20C100$Y90M80C15*M85$
(1)首先需要将它以"$"为分隔符分成若干个组,比如这里有三组:
(A)Y100 (B)Y90M80C15*Y20C100 和 (C)Y90M80C15*M85
(2)再以"*"为分隔符细分成若干个小组,比如:
(A)组分成:Y100
(B)组分成:Y90M80C15 和 Y20C100
(C)组分成:Y90M80C15 和M85
(3)最后以"C","M","Y","K"再细分为各个值,如果没有相应的值,则以0填充。比如:
Y90M80C15 则:Y90M80C15K0
又如:Y20C100则:Y20C100M0K0,类似M85为:C0M85Y0K0
(4)再将它们转换为RGB值。
转换公式为:
R = (1 - Min(1, C/100.0 * (1 - K/100.0) + K/100.0)) * 255;
G = (1 - Min(1, M/100.0 * (1 - K/100.0) + K/100.0)) * 255;
B = (1 - Min(1, Y/100.0 * (1 - K/100.0) + K/100.0)) * 255;
举例:
将Y100转换为RGB色为:
(1)Y100即为C0 M0 Y100 K0(Y为100,其他均为0)
(2)由于C=0, K=0,所以:
C/100.0 = 0
1 - K/100.0 = 1;
R = (1 - Min(1, 0 * 1 + 0)) * 255,结果R=255
G 类似算法,结果G=255
B = (1 - Min(1, 100/100.0 * (1 - 0) + 0)) * 255
= (1 - 1) * 255
= 0
于是得到R255G255B0,其他类推。
(5)最后将CMYK类型的字符串替换(Replace)成为RGB表示的字符串,如:将Y100换成R255G255B0等。
整个过程其实就是将印刷四色转换成RGB显示器颜色的过程。
哪位有时间,帮忙实现一下?写一个函数,谢谢!