我正在使用以下内核来捕获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);
}
原则上它可以工作,但是它只保存整个屏幕的一部分(例如,从工具栏中仅保存了前三个图像,所有其他图像都丢失了),丢失的部分只是黑色。
我在这里做错了什么?我需要在刷新之前刷新一下吗?还是其他原因?
谢谢!
答案 0 :(得分:1)
我已经尝试了您的代码,但也遇到了奇怪的结果:一个简单的框架,上面有一个面板,一个按钮和一个文本框,结果是所有背景(面板,文本框)都是透明的,并且按钮的文字具有相同的作用。
似乎png处理程序对此负责:我尝试将其保存到jpeg文件中,一切正常。
您应该尝试使用jpeg来查看工具栏图像是否存在相同的问题。
问候 Xav'