【发布时间】:2012-03-13 08:44:15
【问题描述】:
我有一个窗口,我在上面调用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 调用或任何方法可以手动清除窗口?
【问题讨论】: