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