我正在使用Direct2D和MFC,并想知道如何使用实时数据来更新渲染目标。例如,我有以下AFX_WM_DRAW2D处理程序:
afx_msg LRESULT CTestView::OnDraw2d(WPARAM wParam, LPARAM lParam)
{
CString text;
CHwndRenderTarget* pRenderTarget = (CHwndRenderTarget*)lParam;
ASSERT_VALID(pRenderTarget);
// Clear window background
pRenderTarget->Clear(ColorF(ColorF::Beige));
// Draw text
CRect rect;
GetClientRect(rect);
text.Format(_T("%i"), value);
pRenderTarget->DrawText(text, rect, m_pBlueBrush, m_pTextFormat);
return TRUE;
}
变量'value'由计时器全局更新:
void CTestView::OnTimer(UINT_PTR nIDEvent)
{
CRect rect;
this->GetWindowRect(&rect);
this->InvalidateRect(&rect);
if (value == NULL)
value = 0;
value++;
CView::OnTimer(nIDEvent);
}
不幸的是,我似乎无法弄清楚如何使用Direct2D显示的更新变量重新绘制界面。做这个的最好方式是什么?我已经读过Direct2D比GDI快得多,所以我想我会用它来处理不断更新的变量。
谢谢!
答案 0 :(得分:0)
答案 1 :(得分:-1)
你必须调用EnableD2DSupport();就这样。无需创建渲染目标,调整其大小,在需要时重新创建它,调用BeginDraw,EndDraw等。如果为窗口启用了D2D支持,则所有操作都在MFC框架中完成。