如何实现另起一点画线  可我的程序只能连续画线
哪位高人能帮我改一下程序吗class CDrawPicView : public CView
{
protected: // 仅从序列化创建
CDrawPicView();
DECLARE_DYNCREATE(CDrawPicView)// 属性
public:
CDrawPicDoc* GetDocument() const;
bool bDraw;
int bRestart;
CPoint cPointStart;
CPoint cPointEnd;
CPoint cTempPoint;
CDC *pDC;// 操作
public:// 重写
public:
virtual void OnDraw(CDC* pDC);  // 重写以绘制该视图
virtual BOOL PreCreateWindow(CREATESTRUCT& cs);
protected:// 实现
public:
virtual ~CDrawPicView();
#ifdef _DEBUG
virtual void AssertValid() const;
virtual void Dump(CDumpContext& dc) const;
#endifprotected:// 生成的消息映射函数
protected:
DECLARE_MESSAGE_MAP()
public:
afx_msg void OnLButtonDown(UINT nFlags, CPoint point);
afx_msg void OnRButtonDown(UINT nFlags, CPoint point);
afx_msg void OnMouseMove(UINT nFlags, CPoint point);
afx_msg void OnLButtonUp(UINT nFlags, CPoint point);
};void CDrawPicView::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
pDC=GetDC();
int nDrawMode=pDC->SetROP2(R2_NOT);
pDC->MoveTo(cPointStart);
pDC->LineTo(cPointEnd);
pDC->MoveTo(cPointStart);
pDC->LineTo(point);
cPointEnd=point;
pDC->SetROP2(nDrawMode);
ReleaseDC(pDC);
CView::OnMouseMove(nFlags, point);
}void CDrawPicView::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
cPointStart=point;
CView::OnLButtonDown(nFlags, point);
}

解决方案 »

  1.   

    令起一点只要MOVETO不要LINETO就可以了阿
      

  2.   

    MOVETO()函数一定鼠标到新的点后Lineto()
      

  3.   

    将要画的一条线上的多个点存到数组里,在OnDraw里画,第一个点用MoveTo,别的点用LineTo,不要放在MouseMove里面画,第二条线存第二个数组,按第一条线一样处理;
    楼主还是要先学的基础知识,对绘图的很多概念都不清楚.
      

  4.   

    To:syy64(太平洋)
    我想过用右键控制,我能在右键中打断画线,但是再次画线的时候总是从原来打断的地方画线,我想在打断后能够画线  并且在打断后单击左键取得第一点
    To:rageliu  我不知道你这么说什么用意  呵呵  还摸不着头脑
    To:boluoCTO(菠萝项目经理)   你说跟rageliu同一个意思  我想  但我不知道具体怎么用 
      

  5.   

    不放在MouseMove会有拖动的效果吗?
      

  6.   

    那这样,在视里设一个bool型的公共变量,当点鼠标左键时赋为真,点鼠标右键时为假,mousemove里加变量控制。void CDrawPicView::OnMouseMove(UINT nFlags, CPoint point)
    {
    // TODO: 在此添加消息处理程序代码和/或调用默认值
          if(bDraw)//控制变量
            {
    pDC=GetDC();
    int nDrawMode=pDC->SetROP2(R2_NOT);
    pDC->MoveTo(cPointStart);
    pDC->LineTo(cPointEnd);
    pDC->MoveTo(cPointStart);
    pDC->LineTo(point);
    cPointEnd=point;
    pDC->SetROP2(nDrawMode);
    ReleaseDC(pDC);
           }
    CView::OnMouseMove(nFlags, point);
    }