显示曲线上的坐标值

mlpok2000 2008-05-30 10:19:51
我在对话框上画的图。用moveto一条一条建立坐标系,并用同样方法画出一条曲线。
现在想鼠标在坐标系范围内,(比如左上角50,50;右下角600,600),双击鼠标时,能显示“坐标值”,因为是坐标值,所以应该是鼠标位置的值经过一定的运算(比如横坐标*2+50,纵坐标*3+50),显示的时候为 X坐标为:xxx,Y坐标为:xxx
不知道怎么得到鼠标值,显示是用MessageBox吗?哪么怎么显示出“X坐标为:xxx,Y坐标为:xxx”。

ps.画曲线还有其他方法没?用moveto只能是整数。。。

谢谢大家了。
...全文
137 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
mlpok2000 2008-05-30
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 happyparrot 的回复:]
还有就是 m_sCoord.Format("X坐标为:%d,Y坐标为:%d",newPt.x,newPt.y);完成了坐标值转字符串吗?用不用itoa什么的?
===没有问题。不需要itoa

这个行不:
CPoint C**Dlg::ConvertPt(CPoint point)
{
CPoint newPt0;
newPt0.x=point.x*2+50;
newPt0.y=point.y*3+60;

return newPt0;

}
===可以。具体根据实际调整。

画出曲线 用LineTo,MoveTo也行的
==具体要看什么曲线了。如果是逼样条或…
[/Quote]
多谢了,我回学校就开机试试,可以的画,我就回来加分结贴了。
再次感谢~
快乐鹦鹉 2008-05-30
  • 打赏
  • 举报
回复
还有就是 m_sCoord.Format("X坐标为:%d,Y坐标为:%d",newPt.x,newPt.y);完成了坐标值转字符串吗?用不用itoa什么的?
===没有问题。不需要itoa

这个行不:
CPoint C**Dlg::ConvertPt(CPoint point)
{
CPoint newPt0;
newPt0.x=point.x*2+50;
newPt0.y=point.y*3+60;

return newPt0;

}
===可以。具体根据实际调整。

画出曲线 用LineTo,MoveTo也行的
==具体要看什么曲线了。如果是逼样条或者贝塞尔曲线,你用LineTo,MoveTo是不实际的。即使你能画,那么效率和效果很难兼顾。
pingguowuai 2008-05-30
  • 打赏
  • 举报
回复
画出曲线 用LineTo,MoveTo也行的,我以前就是这样画,具体到坐标位置就是整数了。happyparrot 说的那种显示坐标的方式我觉得很好也很简单。
mlpok2000 2008-05-30
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 happyparrot 的回复:]
例:

C/C++ codevoid C**Dlg::OnMouseMove(UINT nFlags, CPoint point)
{
CPoint newPt = ConvertPt(point);//假设该函数将point转成你的坐标系坐标

m_sCoord.Format("X坐标为:%d,Y坐标为:%d",newPt.x,newPt.y);//假设m_sCoord为显示坐标的标签绑定的字符串变量
UpdateData(FALSE);

}
[/Quote]

ConvertPt 怎么用呢?参数啊,返回啊什么的。。【比较弱】
这个行不:
CPoint C**Dlg::ConvertPt(CPoint point)
{
CPoint newPt0;
newPt0.x=point.x*2+50;
newPt0.y=point.y*3+60;

return newPt0;

}
还有就是 m_sCoord.Format("X坐标为:%d,Y坐标为:%d",newPt.x,newPt.y);完成了坐标值转字符串吗?用不用itoa什么的?
【多谢指导了】
快乐鹦鹉 2008-05-30
  • 打赏
  • 举报
回复
例:
void C**Dlg::OnMouseMove(UINT nFlags, CPoint point)
{
CPoint newPt = ConvertPt(point);//假设该函数将point转成你的坐标系坐标

m_sCoord.Format("X坐标为:%d,Y坐标为:%d",newPt.x,newPt.y);//假设m_sCoord为显示坐标的标签绑定的字符串变量
UpdateData(FALSE);

}
快乐鹦鹉 2008-05-30
  • 打赏
  • 举报
回复
并用同样方法画出一条曲线
==你是什么曲线呢?用LineTo,MoveTo的效果肯定不好啊。

不知道怎么得到鼠标值,显示是用MessageBox吗?哪么怎么显示出“X坐标为:xxx,Y坐标为:xxx”。
==响应OnMouseMove事件,第二个参数就是鼠标位置。肯定不能用MessageBox啊,用了它,鼠标就动不了了。你可以在界面的某个角落,比如右上角放一个标签,标签绑定一个字符串变量。鼠标移动时,将坐标位置转成字符串格式赋给该变量,再UpdateData(FALSE)就能显示了。
harry_qj 2008-05-30
  • 打赏
  • 举报
回复
显示可以用textout或者控件

15,978

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧