如何在全局范围内,获取屏幕某点的RGB值?
目前我用 GetDC(0)之后GetPixel,  出来的颜色数值很不直观,请问如何获取RGB值?

解决方案 »

  1.   

    GetRValue,GetGValue,GetBValue三个函数
      

  2.   


    GetRValue GetGValue GetBValue
      

  3.   


    这三个函数的参数是GetPixel的返回值吗?
      

  4.   

    GetRValue GetGValue GetBValue  这三个函数怎么用呢?  能给个例子吗? 取全局某点的RGB
      

  5.   

    获取RGB值,用GetRValue,GetGValue,GetBValue三个函数。
    例:
    var
       mousepos:tpoint;
       handle:hwnd;
       color:tcolor;
       r,g,b:byte;
       dc:hdc;
    begin
      getcursorpos(mousepos);
      handle := getdesktopwindow;
      dc := getwindowdc(handle);
      color := getpixel(dc,mousepos.x,mousepos.y);
      r := getrvalue(color) ;
      g := getgvalue(color) ;
      b := getbvalue(color) ;
      label1.color := rgb(r,g,b);
      releasedc(handle,dc);end;
      

  6.   

    /鼠标处的颜色
    procedure TMyColorGet.GetColor();
    var   
      CurDC:   HDC;
      CurPoint:   TPoint;//保存屏幕上的任意点
      Color:   TColor;
      R,G,B:Integer;
    begin
        CurDC   :=   GetDC(0);
        GetCursorPos(CurPoint);
        Color   :=   GetPixel(curdc,CurPoint.x,CurPoint.y);//屏幕上的任意点
        ReleaseDC (0, CurDC);
        m_clrPanel.Color := Color;    R:=GetRValue(Color);
        G:=GetGValue(Color);
        B:=GetBValue(Color);    m_txtRGB.Text := 'RGB('+IntToStr(R)+','+IntToStr(G)+','+IntToStr(B)+')';
        m_txtHex.Text := '#'+IntToHex(R,2)+''+IntToHex(G,2)+''+IntToHex(B,2);    m_clr := Color;
        SetBoxSel(m_clr);    {
        m_clrR.Font.Color := 0 Shl 16 Or 0 Shl 8 Or R;
        m_clrG.Font.Color := 0 Shl 16 Or G Shl 8 Or 0;
        m_clrB.Font.Color := B Shl 16 Or 0 Shl 8 Or 0;
        }end;//色块着色
    procedure TmyColorGet.SetBoxSel(clr:TColor);
    begin
       m_box1.Caption :='';
       m_box2.Caption :='';
       m_box3.Caption :='';
       m_box4.Caption :='';
       m_box5.Caption :='';
       m_box6.Caption :='';
       m_box7.Caption :='';
       m_box8.Caption :='';   case m_boxID of
          1:  begin m_box1.Color := clr;  m_box1.Caption := '√'; end;
          2:  begin m_box2.Color := clr;  m_box2.Caption := '√'; end;
          3:  begin m_box3.Color := clr;  m_box3.Caption := '√'; end;
          4:  begin m_box4.Color := clr;  m_box4.Caption := '√'; end;
          5:  begin m_box5.Color := clr;  m_box5.Caption := '√'; end;
          6:  begin m_box6.Color := clr;  m_box6.Caption := '√'; end;
          7:  begin m_box7.Color := clr;  m_box7.Caption := '√'; end;
          8:  begin m_box8.Color := clr;  m_box8.Caption := '√'; end;
       end;end;