用什麼函數能取出Windows 色彩中的亮度?

解决方案 »

  1.   

    取亮度?可以用R,G,B值计算出来的,记得电视机原理书上有,我看看
      

  2.   

    公式:
    Y = 0.30R + 0.59G + 0.11B // Y为亮度值这是电视机上的公式,不过我想在这里也应一样吧
      

  3.   

    不準確啊?
    windows色彩中的亮度有顯示出來,就是不知用什麼方式能取出來?
      

  4.   

    0.299*R + 0.587*G + 0.114*B (亮度)
      

  5.   

    用以下方法吧: H,L,S分別為:亮度,濃度,色調
    procedure RGB2HLS(R, G, B: Word; var H, L, S: Word);
    var cMax,cMin : Word;
        Rdelta,Gdelta,Bdelta : WORD;
        HH : integer;
    begin
        cMax := Max(Max(R,G) , B);
        cMin := Min(Min(R,G) , B);
        L := ((cMax+cMin)*HLSMAX + RGBMAX) div (RGBMAX + RGBMAX);
        if cMax = cMin then
        begin
           H := UnDefined;
           S := 0;
        end else begin
            if (L <= HLSMAX div 2) then
                S := (((cMax-cMin)*HLSMAX) + ((cMax+cMin) div 2)) div (cMax+cMin)
            else
                S := (((cMax-cMin)*HLSMAX) + ((RGBMAX+RGBMAX-cMax-cMin) div 2))
                   div (RGBMAX+RGBMAX-cMax-cMin);        Rdelta := (((cMax-R)*(HLSMAX div 6)) + ((cMax-cMin) div 2) ) div (cMax-cMin);
            Gdelta := (((cMax-G)*(HLSMAX div 6)) + ((cMax-cMin) div 2) ) div (cMax-cMin);
            Bdelta := (((cMax-B)*(HLSMAX div 6)) + ((cMax-cMin) div 2) ) div (cMax-cMin);        if (R = cMax) then
                HH := Bdelta - Gdelta
            else if (G = cMax) then
                HH := (HLSMAX div 3) + Rdelta - Bdelta
            else
                HH := ((HLSMAX+HLSMAX) div 3) + Gdelta - Rdelta;        if (HH < 0) then
                HH := HH + HLSMAX;
            if (HH > HLSMAX) then
                HH := HH - HLSMAX;
            H := HH;
        end;
    end;
      

  6.   

    我指的亮度是ColorDialog.Exceute 中的亮度.
        ColorDialog1.Options:=[cdFullOpen]; 
      

  7.   

    請問Hewin:
             你的代碼中:HLSMAX,RGBMAX,Undefined 是怎麼定義的.