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