人 人 Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-10 #1 如何获取桌面上的某一点的颜色值 例如我想知道桌面上坐标为(33,33)的颜色值.
L liyinwei Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-10 #2 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;
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;
人 人 Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-10 #3 liyinwei老师: MyColor:=FCanvas.pixel[x,y];//x,y为屏幕坐 这句出错了,是否要在开头的uses语句中加点什么东西啊.
L liyinwei Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-10 #4 不好意思,是我写错了 pixel 改为 Pixels
L liyinwei Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-10 #5 写成函数吧 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;
写成函数吧 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;
人 人 Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-10 #6 谢谢liyinwei老师的耐心指导. 如果我想获取桌面鼠标所在的颜色呢?
人 人 Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-10 #7 谢谢liyinwei老师的耐心指导. 如果我想获取桌面鼠标所在的颜色呢?
L liyinwei Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-10 #8 1.不用叫我:老师。 2.代码如下: private FPoint: TPoint; procedure TForm1.Timer1Timer(Sender: TObject); begin GetCursorPos(FPoint); Color := GetDesktopPixels(FPoint.X,FPoint.Y); end;
1.不用叫我:老师。 2.代码如下: private FPoint: TPoint; procedure TForm1.Timer1Timer(Sender: TObject); begin GetCursorPos(FPoint); Color := GetDesktopPixels(FPoint.X,FPoint.Y); end;
人 人 Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-10 #9 三人行则必有我师,何况你的编程知识确实比我高很多很多.得到你的帮助我已经很幸运了. 能不能在桌面.onmousemove语句中编写呢
L liyinwei Unregistered / Unconfirmed GUEST, unregistred user! 2007-03-10 #10 这个没有办法,因为那桌面并不是你程序的一部分,没有 OnMouseMove 事件可以调用的。 如果仅仅在你的程序上使用,可以使用你窗体或组件的 OnMouseMove 事件来获得颜色。 用 TTimer 实现比较简单、容易,如果仅仅是获得颜色,这样已经可以满足了。
这个没有办法,因为那桌面并不是你程序的一部分,没有 OnMouseMove 事件可以调用的。 如果仅仅在你的程序上使用,可以使用你窗体或组件的 OnMouseMove 事件来获得颜色。 用 TTimer 实现比较简单、容易,如果仅仅是获得颜色,这样已经可以满足了。