如何获取桌面上的某一点的颜色值 ( 积分: 23 )

  • 主题发起人 主题发起人
  • 开始时间 开始时间

Unregistered / Unconfirmed
GUEST, unregistred user!
如何获取桌面上的某一点的颜色值
例如我想知道桌面上坐标为(33,33)的颜色值.
 
var
FCanvas:TCanvas;
MyColor:TColor;
begin
try
FCanvas:=TCanvas.Create;
FCanvas.Handle:=GetDC(0);
MyColor:=FCanvas.pixel[x,y];//x,y为屏幕坐标
finally
ReleaseDC(0,FCanvas.Handle);
FCanvas.Free;
end;
end;
 
liyinwei老师:
MyColor:=FCanvas.pixel[x,y];//x,y为屏幕坐
这句出错了,是否要在开头的uses语句中加点什么东西啊.
 
不好意思,是我写错了
pixel
改为
Pixels
 
写成函数吧
function TForm1.GetDesktopPixels(const X, Y: Integer): TColor;
var
sCanvas: TCanvas;
begin
sCanvas := TCanvas.Create;
try
sCanvas.Handle := GetDC(0);
Result := sCanvas.Pixels[X,Y];
finally
ReleaseDC(0,sCanvas.Handle);
sCanvas.Free;
end;
end;
 
谢谢liyinwei老师的耐心指导.
如果我想获取桌面鼠标所在的颜色呢?
 
谢谢liyinwei老师的耐心指导.
如果我想获取桌面鼠标所在的颜色呢?
 
1.不用叫我:老师。
2.代码如下:
private
FPoint: TPoint;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
GetCursorPos(FPoint);
Color := GetDesktopPixels(FPoint.X,FPoint.Y);
end;
 
三人行则必有我师,何况你的编程知识确实比我高很多很多.得到你的帮助我已经很幸运了.
能不能在桌面.onmousemove语句中编写呢
 
这个没有办法,因为那桌面并不是你程序的一部分,没有 OnMouseMove 事件可以调用的。
如果仅仅在你的程序上使用,可以使用你窗体或组件的 OnMouseMove 事件来获得颜色。
用 TTimer 实现比较简单、容易,如果仅仅是获得颜色,这样已经可以满足了。
 
谢谢liyinwei老师
 
后退
顶部