这是一个简单转换的程序:
void RGB2CMYK(BYTE R, BYTE G, BYTE B, BYTE& C, BYTE& M, BYTE& Y, BYTE& K)
{
C = 255 - R;
M = 255 - G;
Y = 255 - B;
K = C<M?C:M;
K = K<Y?K:Y;
C= C - K;
M = M - K;
Y = Y - K;
}
反方向的:
void CMYK2RGB(BYTE C,BYTE M,BYTE Y,BYTE K,BYTE& R,BYTE& G,BYTE& B)
{
if ( C + K < 255 )
R = 255 - (C + K);
else
R = 0;
if ( M + K < 255 )
G = 255 - (M + K);
else
G = 0;
if ( Y + K < 255 )
B = 255 - (Y + K);
else
B = 0;
}
这是我已经掌握的部分资料:
一、还没试成
BOOL WINAPI TranslateColors(
HTRANSFORM hColorTransform,
PCOLOR paInputColors,
DWORD nColors,
COLORTYPE ctInput,
PCOLOR paOutputColors,
COLORTYPE ctOutput
);
二、
K = 1 - max(R,G,B)
C = 1 - R - K
M = 1 - G - K
Y = 1 - B - K
但这个我觉得不对
从一个DX站点论坛回复看到的
算的结果至少有一项是0
三、用getCvalue等api
结果也不对,值只不过是RGB的倒过来罢了