在自己的一个函数里已经成功通过鼠标点击得到了2个点的坐标信息(现在可以得到改两点间距离,通过messagebox已经显示了)
现在我想使用这两点绘制一条直线(只用绘制即可,不用存储)
似乎应该是用moveto和lineto函数,请问具体代码是怎样的?简单的说,就是那个CDC *pdc什么的我不会用!!!
现在我想使用这两点绘制一条直线(只用绘制即可,不用存储)
似乎应该是用moveto和lineto函数,请问具体代码是怎样的?简单的说,就是那个CDC *pdc什么的我不会用!!!
解决方案 »
- 求助,怎么得到当前路径拷贝文件?
- 多次方程的求解
- 请问如何捕获鼠标在屏幕图象中的颜色RGB并实时跟随鼠标显示该点的颜色RGB?
- 如何实现两条线程之间的消息传递。(Win32API)
- 怎么启用属性表的Apply按钮?
- 请问如何格式化POST字符串?
- 有谁知道 WINDOWS SERVER 2000的序列号?在线等待!!!!!!!!
- win32 console application程序中清屏问题
- 用QuartzCore,在layer上用CGContextDrawImage描画图像,放大时出现黑条
- 现在学Visual C++还来不来的及,一个月后就要用。
- 关于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();
//你的程序
}具体问题具体分析,你的问题不好回答!