转化RGB颜色为CMYK颜色
procedure RGBTOCMYK(R : byte;
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;