在自己的一个函数里已经成功通过鼠标点击得到了2个点的坐标信息(现在可以得到改两点间距离,通过messagebox已经显示了)
现在我想使用这两点绘制一条直线(只用绘制即可,不用存储)
似乎应该是用moveto和lineto函数,请问具体代码是怎样的?简单的说,就是那个CDC *pdc什么的我不会用!!!
现在我想使用这两点绘制一条直线(只用绘制即可,不用存储)
似乎应该是用moveto和lineto函数,请问具体代码是怎样的?简单的说,就是那个CDC *pdc什么的我不会用!!!
解决方案 »
- 请问一下STATIC控件的NOTIFY属性是什么意思?
- 包装一个可靠的UDP传输协议,有关Send函数的实现问题。
- 我在设计窗体时,右下角显示窗体大小比实际窗体分辨率小很多,有什么办法在设计期就画出一个800*600分辨率的窗体来?
- vc++6.0写的MFC DLL问题??
- 对数的函数是什么,参数能是负数吗?
- 客户端程序出现大量listening状态的端口,是什么原因?
- 关于CList内存管理问题
- 高手请进:用vc环境,在编译中的预编译文件的问题,详细描述见帖子。谢谢各位
- 我有一个对话框,上面有两个按钮,一个"确定",一个"退出",我找不到合适的图标,谁发两个图标给我?一个"确定"图标,一个"退出"图标
- 向大家介绍SOAP协议(Simple Object Access Protocol)
- 关于CListCtrl中添加图标
- 请教vc中用ado?
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(m_ptEnd);
ReleaseDC(pDC);
======================
CClientDC pDC(this);
pDC->MoveTo(m_ptOrigin);
pDC->LineTo(m_ptEnd);
CClientDC pDC(this);
pDC.MoveTo(m_ptOrigin);
pDC.LineTo(m_ptEnd);
CDC* pDC = GetDC();
pDC->MoveTo(p1);
pDC->LineTo(p2);
ReleaseDC(pDC);
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有弹出,但是没有直线显示
CDlg::OnPaint(...)
{
//你的程序
CDialog::OnPaint(); //你画的线完全被这行函数所覆盖
}当然,上面我是举个例子,你的问题不一定在这里,但可以肯定是你的绘制的时机(或是地方)不对。
画不出来是因为你画的时机不对,比如:
CDlg::OnPaint(...)
{
CDialog::OnPaint();
//你的程序
}具体问题具体分析,你的问题不好回答!