【发布时间】:2019-02-01 08:46:43
【问题描述】:
我需要使用 D2D 和 CD2DEllipse 类在 C++ MFC 上绘制一个 ELLIPSE, 我希望如果我改变窗口的大小,椭圆也会改变大小。
我希望对象的指针看到类...所以我将它声明到标题:
//hpp
class CmyclassView : public CView
{
...
CD2DEllipse* pE;
...
}
案例A:
我每次都必须初始化椭圆对象 CD2DEllipse 我调整视图大小...WM_PAINT -> OnDraw2D ...但我把椭圆 因为“新”而在堆上......以及前一个椭圆去哪里......
如果我关闭应用程序,d_str 必须调用“delete pE;”?
// cpp
afx_msg LRESULT CDXALGOView::OnDraw2D(WPARAM wParam, LPARAM lParam)
{
C_pRT = (CHwndRenderTarget*)lParam;
ASSERT_VALID(C_pRT);
pE = new CD2DEllipse(D2D1::Ellipse(xyC,r,r)); <<-------
return TRUE;
}
案例 B: 或者最好在构造函数中只创建一次对象,更新 ondraw 上的参数,当我关闭应用程序时,我删除了 物体 c_str
{
pE = new CD2DEllipse(D2D1::Ellipse(xyC,r,r));
}
afx_msg LRESULT CDXALGOView::OnDraw2D(WPARAM wParam, LPARAM lParam)
{
C_pRT = (CHwndRenderTarget*)lParam;
ASSERT_VALID(C_pRT);
pE.point = xyC; <<-------
pE.radiusX = r;
pE.radiusY = r;
return TRUE;
}
【问题讨论】: