C++ MFC 如何绘制线 画笔

mfc笔记画线

步骤一:

在CMFC0420View中添加三个变量: CPoint m_ptOrigin;//起始点坐标 bool m_bDragging; // 拖拽标记 HCURSOR m_hCross;// 光标句柄

步骤二:

在CMFC0420View构造函数中初始化变量 CMFC0420View::CMFC0420View() { }

步骤三:

在CMFC0420View类向导中添加消息OnLButtonDown,并进行设置 (这个函数添加了以后就是CMFC0420View的成员函数了) voidCMFC0420View::OnLButtonDown(UINTnFlags, CPointpoint) { }

步骤四:

在CMFC0420View类向导中添加消息OnMouseMove,并进行设置 voidCMFC0420View::OnMouseMove(UINTnFlags, CPointpoint) {

if (m_bDragging) {

CClientDC dc(this); dc.MoveTo(m_ptOrigin);

dc.LineTo(point); //绘制线段

// TODO: 在此添加消息处理程序代码和/或调用默认值 SetCapture(); //捕捉鼠标 ::SetCursor(m_hCross); //设置十字光标 m_ptOrigin =point;

m_bDragging = TRUE; //设置拖拽标记

//CView::OnLButtonDown(nFlags, point);

// TODO: 在此添加消息处理程序代码和/或调用默认值 // TODO: 在此处添加构造代码

m_hCross = AfxGetApp()->LoadStandardCursor(IDC_CROSS);//获取十字光标句柄 m_bDragging = false;//初始化拖拽标记

}

}

m_ptOrigin =point; //新的起始点

//CView::OnMouseMove(nFlags, point);

步骤四:

在CMFC0420View类向导中添加消息,OnLButtonUp并进行设置 voidCMFC0420View::OnLButtonUp(UINTnFlags, CPointpoint) { }

步骤五:

添加CCurve类,并进行如下定义和初始化 #include

classCCurve { public:

protected: };

CCurve::CCurve() { }

m_ptArray.SetSize(0, 128);

CArraym_ptArray; CCurve();

virtual ~CCurve(); void AddPoint(POINTpt) { }

void Draw(CDC* pDC);

m_ptArray.Add(pt);

//CView::OnLButtonUp(nFlags, point); if(m_bDragging) { }

m_bDragging = false; //清除拖拽标记

ReleaseCapture(); //释放鼠标,还原鼠标形状 // TODO: 在此添加消息处理程序代码和/或调用默认值

CCurve::~CCurve() { }

voidCCurve::Draw(CDC* pDC) { }

步骤六:

在CMFC0420Doc中添加成员变量和成员函数(加粗及下划线部分) classCMFC0420Doc : publicCDocument {

protected: // 仅从序列化创建

CMFC0420Doc();

DECLARE_DYNCREATE(CMFC0420Doc)

pDC->MoveTo(pDate[0]); for (int i = 1; i

pDC->LineTo(pDate[i]); }//for if (pDC) {

POINT *pDate = m_ptArray.GetData(); int nDate = m_ptArray.GetSize(); if (nDate<1)

return;

}//if

// 特性 public:

CArraym_CurveArray; // 操作 public:

void ADDCurve(CCurve *pCurve) { }

void Draw(CDC* pDC);

m_CurveArray.Add(pCurve); void Draw(CDC*pDC);

联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4