捕获 wxFrame 内容并保存到文件

Capture wxFrame contents and save to file

我正在使用以下核心来捕获我的 MainWin 的内容,它是一个 wxFrame:

void MainWin::capture(wxString path)
{   
   wxClientDC dcWindow(this);
   wxCoord screenWidth, screenHeight;

   dcWindow.GetSize(&screenWidth, &screenHeight);

   wxBitmap screenshot(screenWidth, screenHeight, -1);
   wxMemoryDC memDC;
   memDC.SelectObject(screenshot);
   memDC.Clear();
   memDC.Blit(0,0, //Copy to coordinate
              screenWidth,screenHeight,
              &dcWindow,
              0,0 //offset in the original DC
              );
   memDC.SelectObject(wxNullBitmap);
   screenshot.SaveFile(path, wxBITMAP_TYPE_PNG);
}

原则上它可以工作,但它只保存了我整个屏幕的一部分(例如,从工具栏中只保存了前三张图像,所有其他图像都丢失了),丢失的部分只是黑色。

我在这里做错了什么?在 blitting 之前我必须刷新一些东西吗?或者还有什么原因?

谢谢!

我试过你的代码,我也 运行 进入 st运行ge 结果:一个简单的框架,上面有一个面板、一个按钮和一个文本框,结果是所有背景(面板、文本框)都是 t运行sparents,按钮的文本做同样的事情。

似乎 png 处理程序对此负责:我尝试保存到 jpeg 文件,一切正常。

您应该尝试使用 jpeg 看看您的工具栏图像是否有同样的问题。

问候 Xav'