画图时候.
oldbrush=dc.SelectObject(&brush);
dc.Ellipse(MyLed_Demo.LED_Rect[i]);
brush.DeleteObject();
dc.SelectObject(oldbrush); 
请问如何直接将dc的当前brush赋给oldbrush? 我不想用oldbrush=dc.SelectObject(&brush);这句先选择将当前brush赋给oldbrush再选择brush画刷. 我想直接简单地将dc的当前画刷赋给oldbrush. 请问怎么做?

解决方案 »

  1.   

    class CGraph  
    {
    public:
    CPoint m_ptOrigin;//起点
    CPoint m_ptEnd;//终点
    UINT m_nDrawType;//绘画类型
    CGraph();
    CGraph(UINT m_nDrawType,CPoint m_ptOrigin,CPoint m_ptEnd);//此为构造函数。
    virtual ~CGraph();
     
    };
       然后在void CGraphicView::OnLButtonUp(UINT nFlags, CPoint point)中加入如下代码
    //CGraph graph(m_nDrawType,m_ptOrigin,point);//不能用局部变量
    //m_ptrArray.Add(&graph);//加入这种指针数组中
    /* OnPrepareDC(&dc);//这个函数中可以重新设置窗口原点,对于滚动条中,保存数据前要调用此函数
    dc.DPtoLP(&m_ptOrigin);//将设备坐标转换为逻辑坐标
    dc.DPtoLP(&point);//
    CGraph *pGraph=new CGraph(m_nDrawType,m_ptOrigin,point);//在堆中创建新的对象
    m_ptrArray.Add(pGraph);*///加入到指针数组中
    在GraphicView.h中有如下代码
    CPtrArray m_ptrArray;
       在OnDraw中重画时调出数据
    for(int i=0;i<m_ptrArray.GetSize();i++)
    3.在CView::OnPaint()调用了OnDraw(),但在void CGraphicView::OnPaint()中MFC的Wizard没有调用OnDraw(),要注意这个区别。如果你此时想调用,必须手动添加代码。 OnDraw(&dc);