怎样得到屏幕上包括窗体任一点的值?(Delphi)
来源:百度文库 编辑:神马文学网 时间:2024/05/01 04:53:57
抓取屏幕上一点的颜色应该怎么做?
楼主chons(不羁之城)2001-08-1417:25:51 在 Delphi / VCL组件开发及应用 提问怎样得到屏幕上包括窗体任一点的值? 问题点数:20、回复次数:12Top
1 楼summernightrain(夏夜雨)回复于2001-08-14 18:12:12 得分 1
先抓取屏幕,再求该点颜色值。Top
2 楼xzgyb(老达摩)回复于2001-08-14 18:16:53 得分 1
http://www.csdn.net/expert/topic/230/230141.shtm有Top
3 楼appleyao(阿僚)回复于2001-08-14 18:30:41 得分 2
var dc:TCanvas;
color:tcolorref;
begin
dc:=tcanvas.create;
dc.handle:=getdc(0);
color:=getPixel(dc.Handle,x,y);
end;
Top
4 楼ch81(missile)回复于2001-08-14 18:31:07 得分 2
var DC:HDC;
var Color:ColorRef;
begin
DC:=GetDC(0);
Color:=GetPixel(DC,x,y);//x,y为坐标
end;Top
5 楼TangDL(软件流氓)回复于2001-08-31 08:24:27 得分 1
问题是如何捕捉鼠标出了程序窗体外的活动Top
6 楼softcool(泰山)回复于2001-08-31 08:52:08 得分 1
做一个透明窗体,然后把窗体的windowstate=wsMaximized,利用onmousemove事件,就可以取到屏幕任意一点的颜色了Top
7 楼wangzh(独孤求问)回复于2001-08-31 09:21:42 得分 1
gzTop
8 楼TangDL(软件流氓)回复于2001-09-10 13:02:37 得分 4
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TfrmGetColor = class(TForm)
pColor: TPanel;
btnGet: TButton;
btnExit: TButton;
lInfo: TLabel;
btnStop: TButton;
tmCursor: TTimer;
procedure btnGetClick(Sender: TObject);
procedure btnExitClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btnStopClick(Sender: TObject);
procedure tmCursorTimer(Sender: TObject);
private
isSet:Boolean;
{ Private declarations }
public
{ Public declarations }
end;
var
frmGetColor: TfrmGetColor;
implementation
{$R *.dfm}
procedure TfrmGetColor.btnGetClick(Sender: TObject);
begin
if not isSet then
begin
isSet:=True;
tmCursor.Enabled:=True;
end;
end;
procedure TfrmGetColor.btnExitClick(Sender: TObject);
begin
Close;
end;
procedure TfrmGetColor.FormShow(Sender: TObject);
begin
frmGetColor.Left:=(Screen.Width-frmGetColor.Width) div 2;
frmGetColor.Top:=(Screen.Height-frmGetColor.Height) div 2;
end;
procedure TfrmGetColor.btnStopClick(Sender: TObject);
begin
if isSet then
begin
isSet:=False;
tmCursor.Enabled:=False;
end;
end;
procedure TfrmGetColor.tmCursorTimer(Sender: TObject);
var
mDC:HDC;
mP:TPoint;
mColor:TColor;
mCanvas:TCanvas;
mRGB:LongInt;
mR,mG,mB:Integer;
begin
tmCursor.Enabled:=False;
try
mDC:=GetDC(0);
mCanvas:=TCanvas.Create;
try
mCanvas.Handle:=mDC;
GetCursorPos(mP);
mColor:=mCanvas.Pixels[mP.X,mP.Y];
mRGB:=ColorToRGB(mColor);
mB:=mRGB div $00010000;
mG:=(mRGB mod $00010000) div $00000100;
mR:=mRGB mod $00000100;
frmGetColor.Color:=mColor;
//lInfo.Font.Color:=TColor(mRGB xor $ffffffff);
lInfo.Caption:='R:'+IntToStr(mR)+#13+'G:'+IntToStr(mG)+#13+'B:'+IntToStr(mB);
lInfo.Caption:=lInfo.Caption+#13+'X:'+IntToStr(mP.X)+'; Y:'+IntTOStr(mP.Y);
finally
ReleaseDC(0,mDC);
mCanvas.Free;
end;
finally
if isSet then
tmCursor.Enabled:=true;
end;
end;
end.
Top
9 楼TangDL(软件流氓)回复于2001-09-10 13:04:07 得分 4
重点:
mDC:=GetDC(0);
mCanvas:=TCanvas.Create;
try
mCanvas.Handle:=mDC;
GetCursorPos(mP);
mColor:=mCanvas.Pixels[mP.X,mP.Y];
mRGB:=ColorToRGB(mColor);
mB:=mRGB div $00010000;
mG:=(mRGB mod $00010000) div $00000100;
mR:=mRGB mod $00000100;
frmGetColor.Color:=mColor;
//lInfo.Font.Color:=TColor(mRGB xor $ffffffff);
lInfo.Caption:='R:'+IntToStr(mR)+#13+'G:'+IntToStr(mG)+#13+'B:'+IntToStr(mB);
lInfo.Caption:=lInfo.Caption+#13+'X:'+IntToStr(mP.X)+'; Y:'+IntTOStr(mP.Y);
finally
ReleaseDC(0,mDC);
mCanvas.Free;
end;
Top
10 楼errorcode(errorcode)回复于2001-09-10 14:17:37 得分 0
Canvas.Pixels[x,y]
Top
11 楼jacky_shenyi(jacky)回复于2001-09-10 20:07:27 得分 3
我自己做了一个,你要的话,告诉我你的联系方式。Top
12 楼chons(不羁之城)回复于2001-10-18 11:24:30 得分 0
chonsp@163.netTop
相关问题
- 怎样用Delphi5抓取屏幕上任何一个点的颜色?
- VB.NET中如何抓取屏幕上任何一个点的颜色呢?
- 怎样抓取屏幕内容
- 寻找屏幕抓取软件
- 将当前屏幕抓取下来,并将鼠标指针也抓取下来。
- 如何抓取远程计算机的屏幕
- 抓取一个任意窗口或屏幕的图象
- 怎么把抓取的屏幕数据保存下来?
- 有关屏幕图象抓取的问题,高分相送!
- C#怎么实现抓取屏幕并存为Bmp图像?