創建畫線控件窗口大小改變引起的重繪,保存圖像問題。
當窗口尺寸發生改變引起窗口重繪的問題:
(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);
}
(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);
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.