关于屏幕拷贝的问题(100分)

  • 主题发起人 主题发起人 beilei
  • 开始时间 开始时间
B

beilei

Unregistered / Unconfirmed
GUEST, unregistred user!
用以下代码实现屏幕拷贝出现了这样的问题:
1。保存下来的图像是15b的BMP,若把THEBMP设为24b
则速度会慢很多,将近2个数量级。
2。在系统设置为16位色时可以拷贝,当系统为32位色时,得到
的BMP文件大小为0字节
请问是怎么回事,如何解决呢?
代码如下
DeskHWnd := GetDeskTopWindow;
dc := GetDC(DeskHWnd);
ScreenWidth := GetDeviceCaps(dc,HORZRES);
ScreenHeight := GetDeviceCaps(dc,VERTRES);
TheBmp := TBitmap.Create;
TheBmp.Width :=640;
TheBmp.Height := 480;
TheBmp.IgnorePalette :=true;
TheBmp.PixelFormat := pf24bit;
BitBlt(TheBmp.Canvas.Handle, 0,0,640,480,dc, form1.left+5,form1.top+24,SRCCOPY);
Image1.Picture.Bitmap := TheBmp;
Application.ProcessMessages;

TheBmp.Free;
ReleaseDC(DeskHWnd, dc);
// We need a filename to save it to.

// edit1.text:='end';
FName := ExtractFilePath(Application.Exename) + 'capture.bmp';
// Lets save the bitmap to a file.
Image1.Picture.Bitmap.SaveToFile(FName);
end;
 
我把你这段代码执行了一次,在两种显示模式下都可以生成bmp文件,
代码没有问题,请检查显卡的驱动
我的显卡是Tnt2 m64
 
能否帮我测试一下TheBmp分别为15b,16b,24b时
BitBlt(TheBmp.Canvas.Handle, 0,0,640,480,dc, form1.left+5,form1.top+24,SRCCOPY);
的时间消耗?我测试的15b比其他要快将近2个数量级。我的显卡是TNT pro 32M
 
beilei:如果你还要继续讨论请定期提前你的帖子,如果不想继续讨论请结束帖子。
 
给分给分一人50
 
后退
顶部