在存储缓冲存储屏幕捕获(BitBLT等)发送过来IdTCPClient(Store a screen

2019-09-22 21:56发布

在C ++ Windows Vista上的建设者6 ...

Graphics:: TBitmap * bmpscreencapture = new Graphics::TBitmap;
bmpscreencapture-> Height = Screen-> Height;
bmpscreencapture-> Width = Screen-> Width;
HDC ScreenSrc = GetWindowDC (0);
BitBlt (bmpscreencapture-> Canvas-> Handle, 0, 0, Screen-> Width,
Screen-> Height, ScreenSrc, 0, 0, SRCCOPY);
Canvas->Draw(10, 10, bmpscreencapture);
ReleaseDC (GetDesktopWindow (), ScreenSrc);
delete bmpscreencapture;

我现在有用于捕获屏幕并显示所述屏幕捕获到一个空的形式的代码部分。 我想这样做是拍摄的图像存储到内存缓冲区中,然后发送该缓冲区在使用通过使用印服务器IDTCPServer类似的程序来接收客户端的Indy的IdTCPClient互联网。

有没有人有任何建议/想法如何做到这一点? 我是相当新的图形编程

Answer 1:

使用TBitmap :: SaveToStream()方法来将数据保存到一个T流,诸如内存流。 然后传递到T流Indy的TIdTCPConnection :: WriteStream()(印第安纳波利斯9和更早版本)或TIdIOHandler ::写(T流)(印地10)的方法。 在recieving结束时,可以再使用TIdTCPConnection / TIdIOHandler :: ReadStream()方法将数据读入T流,然后通过T流至TBitmap :: LoadFromStream()方法。



文章来源: Store a screen capture (Bitblt) in a memory buffer to send over IdTCPClient