• 转化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;
  • 相关阅读:
    Linux学习笔记-Shell和命令基础
    转载 | 辗转相除法
    C语言字符数组应用示例2:用二维数组输出一个菱形图案
    C语言字符数组应用示例1:编写一个程序,将两个字符串连接起来,不用strcat函数。
    C语言字符数组超细讲解
    C语言二维数组的应用举例
    C语言二维数组超细讲解
    Java同步方法:synchronized到底锁住了谁?
    家乐的深度学习笔记「5」
    工程中的算法应用
  • 原文地址:https://www.cnblogs.com/yzryc/p/6374082.html
Copyright © 2020-2023  润新知