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.
    
  • 相关阅读:
    Sqli-labs Less-47 order by后的注入
    Sqli-labs Less-46 order by后的注入
    Sqli-labs Background-9 order by后的injection
    Sqli-labs Less-45 堆叠注入
    jsp,servlet知识点
    jsp页面编码不统一可能会出问题
    jsp页面找不到,jsp页面乱码
    BZOJ 2843: 极地旅行社 lct splay
    2018/3/23 省选模拟赛
    bzoj 4573: [Zjoi2016]大森林 lct splay
  • 原文地址:https://www.cnblogs.com/del/p/991572.html
Copyright © 2011-2022 走看看