zoukankan      html  css  js  c++  java
  • RGBToHSB

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    uses
      Math;
    
    type
      TRGBColor = record
        Red,
        Green,
        Blue: Byte;
      end;
    
      THSBColor = record
        Hue,
        Saturnation,
        Brightness: Double;
      end;
    
    function RGBToHSB(rgb: TRGBColor): THSBColor;
    var
      minRGB, maxRGB, delta: Double;
      h, s, b: Double;
    begin
       H := 0.0;
       minRGB := Min(Min(rgb.Red, rgb.Green), rgb.Blue);
       maxRGB := Max(Max(rgb.Red, rgb.Green), rgb.Blue);
       delta:= ( maxRGB - minRGB );
       b:= maxRGB;
       if (maxRGB <> 0.0) then s := 255.0 * Delta / maxRGB
       else s := 0.0;
       if (s <> 0.0) then
       begin
         if rgb.Red = maxRGB then h := (rgb.Green - rgb.Blue) / Delta
         else
           if rgb.Green = maxRGB then h := 2.0 + (rgb.Blue - rgb.Red) / Delta
           else
             if rgb.Blue = maxRGB then h := 4.0 + (rgb.Red - rgb.Green) / Delta
       end
       else h := -1.0;
       h := h * 60;
       if h < 0.0 then h := h + 360.0;
       with result do
       begin
         Hue := h;
         Saturnation := s * 100 / 255;
         Brightness := b * 100 / 255;
       end;
    end;
    
    //测试:
    procedure TForm1.Button1Click(Sender: TObject);
    var
      rgb: TRGBColor;
      hsb: THSBColor;
    begin
      rgb.Red := 255;
      rgb.Green := 0;
      rgb.Blue := 0;
    
      hsb := RGBToHSB(rgb);
    
      ShowMessage(FloatToStr(hsb.Hue));         //0
      ShowMessage(FloatToStr(hsb.Saturnation)); //100
      ShowMessage(FloatToStr(hsb.Brightness));  //100
    end;
    
    end.
    
  • 相关阅读:
    RabbitMQ从入门到精通(一)
    MQ的架构作用
    Docker可视化管理工具
    Linux修改war包中文件
    Redis--各个数据类型最大存储量
    linux中直接修改jar包内配置文件
    脚本发布程序
    maven 安装到私服
    HTML基础 text-indent 把文字移出浏览器,隐藏起来
    HTML基础 td valign 设置文本靠上 居中 靠下
  • 原文地址:https://www.cnblogs.com/del/p/991572.html
Copyright © 2011-2022 走看看