一个截图的问题(50分)

  • 主题发起人 主题发起人 小飞龙
  • 开始时间 开始时间

小飞龙

Unregistered / Unconfirmed
GUEST, unregistred user!
如果软件比较大,可能超过屏幕,我要截图要怎么截才能全部截到,
或者是软件有部分给移出屏幕了,这2种情况我不知道怎么才能截到完整的,

请高手指点一下,要如何写代码,或者用什么技术,给个提示
 
复制屏幕了,然后粘贴,让后处理成小的
 
就是要他原来的图不是要处理,是屏幕外的截不到
 
没有人,人呢,那里去了
 
好像只见过保存网页的......
 
没有人,人呢,那里去了
 
hn:=findwindow('xxxx','xxxx');//获得该窗口名柄
getwindowrect(hn,rect);//得到窗口的左上、右下坐标,并赋给rect
dc:=getdc(hn);//获得该窗口画布DC句柄
dc.Canvas.CopyRect(const Dest: TRect, dc, rect);//复制该窗口内的全部到 dest 内
然后对dest进行操作就可以了。
 
键盘上的Alt+Print,应该是截当前窗口的。
 
不行啊,特别是16cy的,明显的错误
 
错在什么地方?
我用这种方法能实现截屏,坐标是窗口的相对坐标,不是屏幕的坐标。
也就是说不管你窗口移到什么位置,都能把窗口里面的东西捉到
 
dc.Canvas.CopyRect(const Dest: TRect, dc, rect);//复制该窗口内的全部到 dest 内
这个明显就是错误吗
dc那里来还有canvas呢
你自己试试就知道了
 
不好意思,是我写错了,改成如下的:
hn:=findwindow('xxxx','xxxx');//获得该窗口名柄
getwindowrect(hn,rect);//得到窗口的左上、右下坐标,并赋给rect
dc:=getdc(hn);//获得该窗口画布DC句柄
bmp1canvas.create;
bmp1canvas.handle:=dc;
bmp1.Canvas.CopyRect(destrect,dc,rect);
bmp1canvas.free;
.......
用savetofile方法存到硬盘中
 
你是否有自己试过代码,这样出来能看到超出屏幕的部分?
 
如果截取的是本程序的界面可以用
TWinControl.PaintTo();
 
to zswang:
不是本程序的,本程序的确实可以大部分都可以做到
 
多人接受答案了。
 
后退
顶部