• 转化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;
  • 相关阅读:
    http协议学习系列
    git常用命令大全
    git常用命令与常见面试题总结
    MyBatis框架及原理分析
    Mybatis常见面试题总结
    java实现克隆的三种(很最全面)
    java中equals和==之间的区别?clone方法的作用,及其为什么要使用clone方法?如何使用clone复制对象?以及深克隆浅克隆
    ThreadLocal的简单使用及实现的原理
    Java 最常见的 208 道面试题
    TCP流量控制
  • 原文地址:https://www.cnblogs.com/yzryc/p/6374082.html
Copyright © 2020-2023  润新知