获取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;
/鼠标处的颜色 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;
GetRValue GetGValue GetBValue
这三个函数的参数是GetPixel的返回值吗?
例:
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;
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;