捕获wxFrame内容并保存到文件

时间:2018-09-28 07:23:32

标签: image screenshot wxwidgets capture screen-capture

我正在使用以下内核来捕获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);
}

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

我在这里做错了什么?我需要在刷新之前刷新一下吗?还是其他原因?

谢谢!

1 个答案:

答案 0 :(得分:1)

我已经尝试了您的代码,但也遇到了奇怪的结果:一个简单的框架,上面有一个面板,一个按钮和一个文本框,结果是所有背景(面板,文本框)都是透明的,并且按钮的文字具有相同的作用。

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

您应该尝试使用jpeg来查看工具栏图像是否存在相同的问题。

问候 Xav'