Я использую следующее ядро для захвата содержимого моего 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);
}
В принципе, это работает, но сохраняет только части моего всего экрана (например, с панели инструментов только сначаласохранены три изображения, все остальные отсутствуют), недостающие части просто черные.
Что я здесь не так делаю?Должен ли я что-то освежить перед блиттингом?Или в чем еще может быть причина?
Спасибо!