У меня есть окно, в котором я вызываю DwmExtendFrameIntoClientArea()
, в окне размещаются другие дочерние окна, я использую Direct2D для рисования в одном из дочерних окон. Когда загружается растровое изображение с черной областью, эта область становится размытой. Я хочу очистить все в дочернем окне и снова нарисовать его на 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 или какой-либо способ очистить окно вручную, прежде чем я снова его нарисую?