2012-04-15

【Delphi】轉換 RGB 色彩為 CMYK

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

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

要轉換 RGBCMYK, 先要建立 2record 資料型別.
  1.  
  2. uses ...., Math;
  3.  
  4. type
  5. TRGBColor = record
  6. Red,
  7. Green,
  8. Blue : integer;
  9. end;
  10.  
  11.  
  12. TCMYKColor = record
  13. Cyan,
  14. Yellow,
  15. Magenta,
  16. KeyPlate : integer;
  17. end;
  18.  



再寫一段轉換函式, 如下:
  1.  
  2. implementation
  3.  
  4. {$R *.dfm}
  5.  
  6. function RGBtoCMYK(const rgbColor : TRGBColor) : TCMYKColor;
  7. begin
  8. with Result do
  9. begin
  10. Cyan := 1 - rgbColor.Red;
  11. Magenta := 1 - rgbColor.Green;
  12. Yellow := 1 - rgbColor.Blue;
  13. KeyPlate := Min(Min(Cyan, Magenta), Yellow) ;
  14. Cyan := Cyan - KeyPlate;
  15. Magenta := Magenta - KeyPlate;
  16. Yellow := Yellow - KeyPlate;
  17. end;
  18. end;
  19.  


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


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