を呼び出すウィンドウがありDwmExtendFrameIntoClientArea()
、そのウィンドウは他の子ウィンドウをホストし、Direct2D を使用して子ウィンドウの 1 つをペイントします。黒い領域を持つビットマップが読み込まれると、その領域がぼやけます。子ウィンドウのすべてをクリアして、もう一度ペイントしたいWM_PAINT
のですが、内容をクリアできないようです。
を使用してクリアしようとしました
m_pRenderTarget->Clear(D2D1::ColorF(D2D1::ColorF::Black))
これにより、子ウィンドウ領域が黒くなり、以前の描画がすべて消去されますが、透明度はなくなります。
クライアント領域上の単なる黒いバーであるビットマップを描画しようとしました
m_pRenderTarget->DrawBitmap(m_pBkgrnd,D2D1::Rect<float> (0.f,0.f,GetWidth(),GetHeight()))
これにより、その前に現れたものはすべて黒くなります。
子ウィンドウ全体に黒い領域をペイントする古い GDI の方法を試してみました。
RECT rc; GetClientRect(m_hwnd, &rc); HBRUSH brush = CreateSolidBrush(RGB(0,0,0)); HDC hc=GetDC(m_hwnd); FillRect(hc, &rc, brush); ReleaseDC(m_hwnd,hc); DeleteObject(brush);
うまくいきません。
ただし、これを行わずにメイン ウィンドウのサイズを変更しようとすると、正しく機能します。つまり、前の絵が消えます。
ウィンドウを再度描画する前に手動でウィンドウをクリアする API 呼び出しまたは方法はありますか?