★★★ 如何将RGB色彩值转换为CMYK色彩值?最好写个函数,呵呵~~谢谢各位了!
解决方案 »
- 今天面试,遇到这样一到样式的变态面试题、怎么做啊?
- TService 中使用到网络路径的问题
- 怎么判断TSQLquery是否执过行close?
- 将DBGrid设成在翻页时才进一步取数据而不会一下子把数据全取回来的属性?
- 各位老大 如何使用dlephiX来实现播放器呢
- 谁那里有水晶报表7.0安装包或者设计器也行,急用!水晶报表8.0向下兼容吗,谢谢!本人QQ 147040054
- 图片怎样录入到数据库(paradox)
- 我在用Tquery控件时,程序启动老是让我输入,用户名和密码,怎样去掉它?
- 透明控件制作问题
- 用delphi做的dll程序在vb中调用居然会找不到dll文件??
- treeview中如何更新子树
- stringGrid 中的数据可不可以编辑呢?是不是只能从数据库里显示出来,而不能编辑呢?
c=255-r;
m=255-g;
y=255-b;
k=MinValue(c,m,y);
c'=c-k;
m'=m-k;
y'=y-k;
这里的c',m',y',k就是r,g,b的转换值。
BEGIN
R := 1.0 - (C + K);
G := 1.0 - (M + K);
B := 1.0 - (Y + K)
END {CMYtoRGB};
// R, G, B, C, M, Y each IN [0.0 .. 1.0]
PROCEDURE RGBToCMYK(CONST R,G,B: TReal; VAR C,M,Y,K: TReal);
BEGIN
RGBtoCMY(R,G,B, C,M,Y);
K := MinValue([C, M, Y]);
C := C - K;
M := M - K;
Y := Y - K
END {RGBtoCMYK};没做过只是帮你找的资料
G : byte;
B : byte;
var C : byte;
var M : byte;
var Y : byte;
var K : byte);
begin
C := 255 - R;
M := 255 - G;
Y := 255 - B;
if C < M then
K := C else
K := M;
if Y < K then
K := Y;
if k > 0 then begin
c := c - k;
m := m - k;
y := y - k;
end;
end;procedure CMYKTORGB(C : byte;
M: byte;
Y : byte;
K : byte;
var R : byte;
var G : byte;
var B : byte);
begin
if (Integer(C) + Integer(K)) < 255 then
R := 255 - (C + K) else
R := 0;
if (Integer(M) + Integer(K)) < 255 then
G := 255 - (M + K) else
G := 0;
if (Integer(Y) + Integer(K)) < 255 then
B := 255 - (Y + K) else
B := 0;
end;procedure ColorCorrectCMYK(var C : byte;
var M : byte;
var Y : byte;
var K : byte);
var
MinColor : byte;
begin
if C < M then
MinColor := C else
MinColor := M;
if Y < MinColor then
MinColor := Y;
if MinColor + K > 255 then
MinColor := 255 - K;
C := C - MinColor;
M := M - MinColor;
Y := Y - MinColor;
K := K + MinColor;
end;procedure TForm1.Button1Click(Sender: TObject);
var
R : byte;
G : byte;
B : byte;
C : byte;
M : byte;
Y : byte;
K : byte;
begin
R := 151;
G := 81;
B := 55;
Memo1.Lines.Add('R = ' + IntToStr(R));
Memo1.Lines.Add('G = ' + IntToStr(G));
Memo1.Lines.Add('B = ' + IntToStr(B));
Memo1.Lines.Add('-------------------');
RGBTOCMYK(R, G, B, C, M, Y, K);
Memo1.Lines.Add('C = ' + IntToStr(C));
Memo1.Lines.Add('M = ' + IntToStr(M));
Memo1.Lines.Add('Y = ' + IntToStr(Y));
Memo1.Lines.Add('K = ' + IntToStr(K));
Memo1.Lines.Add('-------------------');
CMYKTORGB(C, M, Y, K, R, G, B);
Memo1.Lines.Add('R = ' + IntToStr(R));
Memo1.Lines.Add('G = ' + IntToStr(G));
Memo1.Lines.Add('B = ' + IntToStr(B));
Memo1.Lines.Add('-------------------');
RGBTOCMYK(R, G, B, C, M, Y, K);
c := c + 2;
m := m + 2;
y := y + 2;
ColorCorrectCMYK(C, M, Y, K);
Memo1.Lines.Add('C = ' + IntToStr(C));
Memo1.Lines.Add('M = ' + IntToStr(M));
Memo1.Lines.Add('Y = ' + IntToStr(Y));
Memo1.Lines.Add('K = ' + IntToStr(K));
end;