mfc畫圖源碼
❶ 求一個MFC畫圖源碼,就是用MFC編寫的 謝謝了 謝謝各位大GG 謝謝哦 [email protected]
重新定義一個類,用這個類來保存畫圖的類型,起點,終點:
class CGraph
{
public:
UINT m_dwsytle;
CPoint m_dnpt;
CPoint m_uppt;
CGraph();
CGraph(UINT style,CPoint dnpt,CPoint uppt);
virtual ~CGraph();
};
CGraph::CGraph(UINT style,CPoint dnpt,CPoint uppt)
{
m_dwsytle=style;
m_dnpt=dnpt;
m_uppt=uppt;
}
為VIEW類增加:
CPtrArray m_ptrArray;
void CGraphicView::OnLButtonUp(UINT nFlags, CPoint point)中的代碼增加下面代碼:
CGraph *pgraph=new CGraph(m_dwstyle,m_dnpt,point);
m_ptrArray.Add(pgraph);
void CGraphicView::OnDraw(CDC* pDC)
{
CGraphicDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
CClientDC dc(this);
CBrush *pBrush=(CBrush*)dc.SelectStockObject(NULL_BRUSH);
int count=m_ptrArray.GetSize();
for (int i=0;i<count;i++)
{
switch (((CGraph*)m_ptrArray.GetAt(i))->m_dwsytle)
{
case 1:
dc.SetPixel(((CGraph*)m_ptrArray.GetAt(i))->m_dnpt,RGB(255,0,0));
break;
case 2:
dc.MoveTo(((CGraph*)m_ptrArray.GetAt(i))->m_dnpt);
dc.LineTo(((CGraph*)m_ptrArray.GetAt(i))->m_uppt);
break;
case 3:
dc.Rectangle(CRect(((CGraph*)m_ptrArray.GetAt(i))->m_dnpt,
((CGraph*)m_ptrArray.GetAt(i))->m_uppt));
break;
case 4:
dc.Ellipse(CRect(((CGraph*)m_ptrArray.GetAt(i))->m_dnpt,
((CGraph*)m_ptrArray.GetAt(i))->m_uppt));
break;
default:
break;
}
}
dc.SelectObject(pBrush);
// TODO: add draw code for native data here
}
就可以了。
❷ VC++ 用MFC點畫圓為什麼只能畫一半 如圖,用的MFC自帶的源代碼,在後面加的一部分代碼
圓心在(500,500),你的y計算,只計算了下半圓(圓心以下)的每個點,沒有計算上半圓(圓心之上)。上半圓的y坐標 y'=2b-y (y是已有的下半圓的點坐標)
畫圓不是用「畫點」,而是畫點與點之間的連線(畫線)
畫圓有專用的畫圓函數,不需要自己一點一點的畫。
❸ 急求用MFC編寫的畫圖板源代碼
以下這個源代碼就是用MFC寫的,可以模擬Windows的畫圖程序。
以後可以多去codeproject這個開源網站找找。
http://www.codeproject.com/Articles/8494/DrawTools