創建畫線控件窗口大小改變引起的重繪,保存圖像問題。

當窗口尺寸發生改變引起窗口重繪的問題:
  (1)先聲明一個新類。例:畫線控件:class Csave  //聲明的保存類
 {
  public:
    CPoint n;//聲明跟原來一樣的屬性變量
    CPoint m;
    Csave(CPoint,CPoint);//特別注意這裏通常採用有參的構造函數,以便後面的調用
    virtual ~Csave();

};
(2)然後爲程序的類(一般就是主程序類含OnDraw和LBUTDOWN等之類的)增加一個CPtrArray類型的成員變量:m_ptrArray。
在程序的執行代碼中參照添加如下代碼:
    Csave *psave=new Csave(m_p1,m_p2);//此處需要用指針類型的的變量
    m_ptrArray.Add(psave);//
    COleControl::OnLButtonUp(nFlags, point);//此處不是添加的代碼。
  //在這裏使用的新添加類,所以要在前部添加對應的頭文件名如:#include "save.h".
(3)然後在OnDraw函數中將保存的圖形元素再次顯示出來;
   代碼:
   CBrush *pBrush=CBrush::FromHandle((HBRUSH)GetStockObject(NULL_BRUSH));
    pdc->SelectObject(pBrush);//首先創造一個透明的畫刷。

    for(int i=0;i<m_ptrArray.GetSize();i++)
    {
           pdc->MoveTo(((Csave*)m_ptrArray.GetAt(i))->m);
     //GetAt函數實際上是從m_ptrArray集合對象中取出其保存的地址。
           pdc->LineTo(((Csave*)m_ptrArray.GetAt(i))->n);
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章