一个关于桌面画图的问题!(100分)

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

jbas

Unregistered / Unconfirmed
GUEST, unregistred user!
小弟在桌面上画了一些东西,不知能不能保存下来,既屏幕刷新了以后还存在,不会被覆盖
,能不能不用在ontimer事件中一直执行这个程序!
屏幕画图:
procedure TForm1.Button1Click(Sender: TObject);
var
screendc:hdc;
ee:tcanvas;
begin
screendc:=getdc(0);
ee:=tcanvas.Create;
ee.Handle:=screendc;
ee.Brush.style:=bsclear;
ee.Pen.color:=clred;
ee.Ellipse(20,40,80,120);
ee.Free;
releasedc(0,screendc);
end;
屏幕刷新:
procedure TForm1.Button2Click(Sender: TObject);
begin
InvalidateRect(0, nil, true);
end;
我想即使按下botton2进行屏幕刷新以后,那个自己在桌面画的图还在,没有被冲掉!
高手们帮忙!

 
大侠们怎么不理会呀!
我想不是要先把屏幕拷贝下来,然后再在这上面改动后,再保存为背景吧!
大侠们帮忙了!
 
你可以试着控制windows的右键。我只是控制过开始按扭,没有控制过右键。我回去给你试试
 
把屏幕抓下來顯示為模式最大化無邊框窗口。
若不這樣做﹐也可以控制桌面的刷新。
SendMessage(Handle, WM_SETREDRAW, 1, 0);
RedrawWindow(Handle, NULL, 0, RDW_FRAME + RDW_INVALIDATE +
RDW_ALLCHILDREN + RDW_NOINTERNALPAINT);
這是從bbs上Copy下來的﹐似乎與此有關﹐我不會用﹐看你的了﹗
 
谢谢关注!
大侠们,我指的屏幕拷贝下来是个比喻,不是真的要这样做吧!我就是要实现在屏幕上画个东西
而且在程序结束前,即使屏幕刷新它也不会改变,就像是画在背景上一样!
 
有没有搞错,都那样了还想不刷新?
那你InvalidateRect(0, nil, true)干吗.
应该是先抓屏幕,设成背景,然后用canvas画图,而不是直接在屏幕上画,
那样肯定被刷新掉的.
 
to bubble!
那些屏幕游戏难道也是抓屏,然后设为背景的吗?
能指导一下那些屏幕游戏的基本原理吗?
 
当然了,想你也是要做类似的东西,
先抓屏,毫无疑问.
 
免费软件
http://www.truevcl.com/html/freedesktop.html
 
我看了那个软件,也是象bubble兄说的那样,先把屏幕保存下来,在再背景上画,就这样吧!谢谢大家!
 
基于hook的屏幕涂鸦程序!
http://www.delphibbs.com/delphibbs/dispq.asp?lid=955227
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
771
import
I
后退
顶部