Chrome ウィンドウのスクリーンショットを撮ろうとしています。次のようになります。
スクリーンショットを取得するために使用PrintWindow
すると、ウィンドウのタイトルバー/Chrome タブ領域にちらつきが表示されます。キャプチャされたスクリーンショットには、Windows Basic スタイルのタイトルバーの奇妙なレンダリングが含まれています (私のマシンは Aero テーマを実行していますが)。
他のいくつかのアプリも同様の動作を示し、画面上でちらつきますが、キャプチャされたスクリーンショットにはタイトルバーのアーティファクトが表示されないことに気付きました。これを行うアプリには、Office 2010、IE 10、および Trillian タブ付きチャット ウィンドウが含まれます。つまり、非クライアント領域を拡張するウィンドウには、この問題があるようです。
これを再現するコードは単純です。
void Screenshot(HWND hWnd) {
RECT rc;
GetClientRect(hWnd, &rc);
HDC hdcScreen = GetDC(NULL);
HDC hdc = CreateCompatibleDC(hdcScreen);
HBITMAP hbmp = CreateCompatibleBitmap(hdcScreen,
rc.right - rc.left, rc.bottom - rc.top);
SelectObject(hdc, hbmp);
//Print to memory hdc
PrintWindow(hWnd, hdc, PW_CLIENTONLY);
}
ちらつきや奇妙な視覚的アーティファクトが表示されるのはなぜですか? それを止めるにはどうすればよいですか?