准备问微软的问题--获取屏幕图象不理想(100分)

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

zhukewen

Unregistered / Unconfirmed
GUEST, unregistred user!
以下是我的代码<br>&nbsp; function GetFormBitmap: TBitmap;<br>&nbsp; var<br>&nbsp; &nbsp; ScreenDC: hDC;<br>&nbsp; begin<br>&nbsp; &nbsp; Result := TBitmap.Create;<br>&nbsp; &nbsp; Result.Width := Width;<br>&nbsp; &nbsp; Result.Height := Height;<br>&nbsp; &nbsp; ScreenDC := GetDC(0);<br>&nbsp; &nbsp; bitblt(Result.Canvas.Handle,0,0,Width,Height,ScreenDC,Left,Top,SRCCOPY);<br>&nbsp; &nbsp; ReleaseDC(0,ScreenDC);<br>&nbsp; end;<br>在Windows 2000 下运行,偶尔会出现抓取的图象是空白的,接着就每次打印都是空白,<br>直到程序退出后重新运行,又一切正常。次过程中程序没有报告任何错误。我以前用<br>MainForm.Print,现象与上面一样。是否是操作系统的bug?
 
你在别人的机器上试过没有?
 
你见过Print Screen键抓过这样的screenshot吗?<br><br>负责任地告诉你:如果你的程序和硬件没问题,要么是Borland的code有bug,要么是你的<br>机器用了什么特别的软件(bitblt不能处理DirectX的任何surface)。<br>遇到这种情况,可以在IDE环境下临时使用breakpoint进行观察,或者在windbg里面设置断<br>点。<br>你还可以看一下Task Manager里面获取的user object, handle count, GDI object等数值<br>是否持续增加,以便确定是否有handle leak或者其他leak。
 
代码没错的啊,问题是<br>1.最后的 bitmap 是怎样被显示的呢?<br>2.如果抓 GDI 桌面,使用 GetDC(0) 应该可以,如果抓的不是桌面 GetDC(0) 就错了。
 

Similar threads

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