2012-04-15

【Delphi】轉換 RGB 色彩為 CMYK

資料來源 ----
http://delphi.about.com/od/delphitips2007/qt/rgb_cmyk.htm

印刷四分色模式是彩色印刷時採用的一種套色模式, 請參考 http://zh.wikipedia.org/wiki/CMYK.

要轉換 RGBCMYK, 先要建立 2record 資料型別.
 
uses ...., Math;

type
    TRGBColor = record
          Red,
          Green,
          Blue : integer;
    end;


    TCMYKColor = record
          Cyan,
          Yellow,
          Magenta,
          KeyPlate : integer;
    end;
 



再寫一段轉換函式, 如下:
 
implementation

{$R *.dfm}

function RGBtoCMYK(const rgbColor : TRGBColor) : TCMYKColor;
begin
    with Result do
    begin
        Cyan := 1 - rgbColor.Red;
        Magenta := 1 - rgbColor.Green;
        Yellow := 1 - rgbColor.Blue;
        KeyPlate := Min(Min(Cyan, Magenta), Yellow) ;
        Cyan := Cyan - KeyPlate;
        Magenta := Magenta - KeyPlate;
        Yellow := Yellow - KeyPlate;
    end;
end;
 


Form 上放一個按鈕, 按鈕的 click event 寫入下述程式碼:
 
procedure TForm1.Button1Click(Sender: TObject);
var
    rgbColor : TRGBColor;
    cmykColor : TCMYKColor;
begin
    rgbColor.Red := 128;
    rgbColor.Green := 64;
    rgbColor.Blue := 192;
    cmykColor := RGBtoCMYK(rgbColor) ;
    Caption := Format('%d,%d,%d,%d',[cmykColor.Cyan, cmykColor.Magenta, cmykColor.Yellow, cmykColor.KeyPlate])
end;
 


按一下 Button1 鈕, 就會在 FormCaption 欄顯示轉換後的 CMYK 值了.