【问题标题】:Store a screen capture (Bitblt) in a memory buffer to send over IdTCPClient将屏幕截图 (Bitblt) 存储在内存缓冲区中以通过 IdTCPClient 发送
【发布时间】:2009-11-16 13:35:52
【问题描述】:

在 windows vista 上的 c++ builder 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;

我目前有一段代码用于捕获屏幕并将屏幕捕获显示到一个空表单上。我想做的是将捕获的图像存储到内存缓冲区中,然后使用 indy 客户端 IdTCPClient 通过 Internet 发送此缓冲区,以由使用 indy 服务器 IDTCPServer 的类似程序接收。

有没有人对如何完成这个有任何建议/想法?我是图形编程的新手

【问题讨论】:

    标签: graphics tcp c++builder indy c++builder-6


    【解决方案1】:

    使用 TBitmap::SaveToStream() 方法将数据保存到 TStream,例如 TMemoryStream。然后将 TStream 传递给 Indy 的 TIdTCPConnection::WriteStream()(Indy 9 及更早版本)或 TIdIOHandler::Write(TStream)(Indy 10)方法。在接收端,您可以使用 TIdTCPConnection/TIdIOHandler::ReadStream() 方法将数据读入 TStream,然后将 TStream 传递给 TBitmap::LoadFromStream() 方法。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-02-07
      相关资源
      最近更新 更多