Delphi - объектно-ориентированный язык программирования, разработанный компанией Borland в 1995 году. Он основан на языке программирования Pascal, но имеет более расширенные возможности и добавлены новые функции.
Delphi является интегрированной средой разработки (IDE), которая позволяет разрабатывать программное обеспечение для различных платформ, включая Windows, macOS, Android и iOS. Delphi достигает многоплатформенности с помощью...
Ниже представлены две функции RGBTOCMYK() и CMYKTORGB(), которые позволяют преобразовывать набор цветов RGB и CMYK.
Замечание: В цвете CMY чёрные тона достигаются путём одинаковых значений Циана, Магенты и Жёлтого чернил. Чёрные чернила используются только при чисто чёрных точках, для повышения контрастности и экономии цветных чернил. Как раз для этого предназначена третья функция ColorCorrectCMYK().
procedureRGBTOCMYK(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
;