首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

MFC坐标与OpenGL坐标转换有关问题

2012-12-14 
MFC坐标与OpenGL坐标转换问题!本帖最后由 xiazhou88 于 2012-05-15 19:11:19 编辑进入正题:void CFirstVie

MFC坐标与OpenGL坐标转换问题!
本帖最后由 xiazhou88 于 2012-05-15 19:11:19 编辑 进入正题:
        

void CFirstView::OnLButtonUp(UINT nFlags, CPoint point) 
{
// TODO: Add your message handler code here and/or call default
glClearColor(1.0f, 1.0f, 1.0f, 1.0f
         glClear(GL_COLOR_BUFFER_BITglColor3f(0.0f, 1.0f, 0.0f);
glPointSize(10.0);

glBegin(GL_POINTS);
glVertex2f(point.x, point.y);

glEnd();
glFlush();
CView::OnLButtonUp(nFlags, point);
}

     我弄了一个鼠标左键的响应,问题是:我在MFC的对话框中点击,但是显示的“点”不在点击的地方?这么解决!
[解决办法]
看你的代码不是对话框的啊 
[解决办法]
引用:
看你的代码不是对话框的啊

就是MFC最简单的“单文档”窗口,在这个窗口点击的时候,点击的坐标与该窗口显示的点,不在一个坐标!该如何解决!
[解决办法]
该回复于2012-05-16 13:20:17被版主删除
[解决办法]
CRect rect;
GetClientRect(&rect);

x=point.x;
y=rect.Height()-point.y;

绘制点(x,y)

你看这样行不行
[解决办法]
引用:
CRect rect;
GetClientRect(&rect);

x=point.x;
y=rect.Height()-point.y;

绘制点(x,y)

你看这样行不行

不行哟!
[解决办法]
opengl的世界坐标是左下角原点,mfc控件好像是左上角原点,x不用变,y需要转换
我写代码的时候还有一个小问题,就是y转换后总是跟实际位置差了5个单位左右,需要手动减去,不知道原因
[解决办法]
引用:
opengl的世界坐标是左下角原点,mfc控件好像是左上角原点,x不用变,y需要转换
我写代码的时候还有一个小问题,就是y转换后总是跟实际位置差了5个单位左右,需要手动减去,不知道原因

你的Y坐标这么转换的?
我用另外一种方法解决了,但是代码量太大,想看看你这么解决的!
[解决办法]
引用:
引用:
opengl的世界坐标是左下角原点,mfc控件好像是左上角原点,x不用变,y需要转换
我写代码的时候还有一个小问题,就是y转换后总是跟实际位置差了5个单位左右,需要手动减去,不知道原因

你的Y坐标这么转换的?
我用另外一种方法解决了,但是代码量太大,想看看你这么解决的!

很简单,就是control.Height-mouse.Y
只是这个mouse.Y是控件内的相对坐标,要从获得的屏幕坐标根据control.Top和control.Left转化一次
所以流程就是:
鼠标的屏幕坐标->控件内相对坐标->opengl世界坐标
[解决办法]
引用:
引用:

引用:
opengl的世界坐标是左下角原点,mfc控件好像是左上角原点,x不用变,y需要转换
我写代码的时候还有一个小问题,就是y转换后总是跟实际位置差了5个单位左右,需要手动减去,不知道原因

你的Y坐标这么转换的?
我用另外一种方法解决了,但是代码量太大,想看看你这么解决的!

很简单,就是control.Height-mouse.Y……

control.Height?
我新手,不懂!
请再详细点!
[解决办法]
mfc与opengl坐标系不同吧!

热点排行