У меня есть окно, в которое я звоню 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 или какой-либо способ очистить окно вручную, прежде чем я снова его нарисую?