我想在一个程序(不是我写的)的主界面上画直线,有什么方法没有?(300分)

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

lishding

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在一个程序(不是我写的)的主界面上画直线,有什么方法没有?
最好给出具体的方案,
分不够再加
 
你的意思是画完就完了,还是希望该程序启动后显示你所画的线?如果是后者,你需要有
深厚的逆向工程功底。
 
我的意思是在它的程序运行后,我可在它的程序上随意画线,又可以擦掉,

又不影响它原来的程序,

 
这个程序关闭时不需要保存我画的线

 
直接画到他的主窗体的HDC上就行了
var c:TCanvas;
begin
c:=TControlCanvas.Create;
c.handle:=GetDC(GetWindow(//你要画图的程序的类名与窗口名));
c.MoveTo(0,0);
c.LineTO(100,100);
c.free;
 
我试试先,谢谢了
 
要重画,一刷新就没了
 
var c:TCanvas;
begin
c:=TControlCanvas.Create;
c.handle:=GetDC(GetWindow(//窗口名));
c.MoveTo(0,0);
c.LineTO(100,100);
c.free;
 
问题又来了,我是想用按下鼠标就在那个窗口上随意画线,就像在CAD中一样

但当我鼠标一按下就激活了那个程序,鼠标按下在那个程序中有别的功能,
 
做个“演示”按钮,按下按钮时,拷屏,把画贴到一个TImage中并遮住整个窗口,然后在TImage中画线,
 
procedure TForm1.Button1Click(Sender: TObject);
var
FullscreenCanvas:TCanvas;
dc:HDC;
begin
DC := GetDC(GetWindow(//窗口名));
FullscreenCanvas := TCanvas.Create;
FullscreenCanvas.Handle := DC;
image1.Canvas.CopyRect(Rect(0, 0, screen.Width,screen.Height),fullscreenCanvas,Rect (0, 0, Screen.Width, Screen.Height));
FullscreenCanvas.Free;
ReleaseDC (0, DC);
end;
 
在它上面画线是可以作到了,但当这个程序一激活,画的那些线就没有了,
有没有办法在它刷新的时候也不会被擦去,

我想根据所画的线生成一个置顶的不规则窗口,
但好像实现不了,不知为什么,
 
把画过的线存储下来,在刷新后重画
 
结束了,散分

谢谢各位
 
多人接受答案了。
 
后退
顶部