在自己的一个函数里已经成功通过鼠标点击得到了2个点的坐标信息(现在可以得到改两点间距离,通过messagebox已经显示了)
现在我想使用这两点绘制一条直线(只用绘制即可,不用存储)
似乎应该是用moveto和lineto函数,请问具体代码是怎样的?简单的说,就是那个CDC *pdc什么的我不会用!!!

解决方案 »

  1.   

    CDC *pDC = GetDC();
    pDC->MoveTo(m_ptOrigin);
    pDC->LineTo(m_ptEnd);
    ReleaseDC(pDC);
    ======================
    CClientDC pDC(this);
    pDC->MoveTo(m_ptOrigin);
    pDC->LineTo(m_ptEnd);
      

  2.   

    不好意思,搞错了
    CClientDC pDC(this);
    pDC.MoveTo(m_ptOrigin);
    pDC.LineTo(m_ptEnd);
      

  3.   

    POINT p1, p2; //这里是你得到的两个点的座标
    CDC* pDC = GetDC();
    pDC->MoveTo(p1);
    pDC->LineTo(p2);
    ReleaseDC(pDC);
      

  4.   

    如果要更改画笔,参考CPen类,很简单的。
      

  5.   

    我就是这么用的啊,可是就是没有线画出来。我把代码贴出来吧:
    if(m_CurrentOperation == Query_Distance && Button ==1)
    {
    CString m_Dist_ValueAsString;
    CDC *pDC = GetDC(); if(m_Dist_Click == 0)
    {
    m_Dist_Line_Start.SetX(X);// X是鼠标点击的x坐标,Y类同
    m_Dist_Line_Start.SetY(Y);
    m_Dist_Start = m_map.ToMapPoint((float)X,(float)Y);//转换成地图坐标
    m_Dist_Click = 1;
    }
    else if(m_Dist_Click == 1)
    {
    m_Dist_Line_End.SetX(X);
    m_Dist_Line_End.SetY(Y);
    m_Dist_End = m_map.ToMapPoint((float)X,(float)Y);
    m_Dist_Click = 0;
    m_Dist_ValueAsString.Format("%f",m_Dist_Start.DistanceTo(m_Dist_End)*1000);//得到距离
    pDC->MoveTo((int)m_Dist_Line_Start.GetX(),(int)m_Dist_Line_Start.GetY());
    pDC->LineTo((int)m_Dist_Line_End.GetX(),(int)m_Dist_Line_End.GetY());
    MessageBox(m_Dist_ValueAsString+" m");
    ReleaseDC(pDC);
    }
    }
    结果就是MessageBox有弹出,但是没有直线显示
      

  6.   

    画不出来是因为你画的时机不对,比如:
    CDlg::OnPaint(...)
    {
    //你的程序
    CDialog::OnPaint(); //你画的线完全被这行函数所覆盖
    }当然,上面我是举个例子,你的问题不一定在这里,但可以肯定是你的绘制的时机(或是地方)不对。
      

  7.   

    以我举的例子为例,改为:
    画不出来是因为你画的时机不对,比如:
    CDlg::OnPaint(...)
    {
    CDialog::OnPaint();
    //你的程序
    }具体问题具体分析,你的问题不好回答!