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)
你看这样行不行
[解决办法]不行哟!
[解决办法]opengl的世界坐标是左下角原点,mfc控件好像是左上角原点,x不用变,y需要转换
我写代码的时候还有一个小问题,就是y转换后总是跟实际位置差了5个单位左右,需要手动减去,不知道原因
[解决办法]你的Y坐标这么转换的?
我用另外一种方法解决了,但是代码量太大,想看看你这么解决的!
[解决办法]很简单,就是control.Height-mouse.Y
只是这个mouse.Y是控件内的相对坐标,要从获得的屏幕坐标根据control.Top和control.Left转化一次
所以流程就是:
鼠标的屏幕坐标->控件内相对坐标->opengl世界坐标
[解决办法]control.Height?
我新手,不懂!
请再详细点!
[解决办法]mfc与opengl坐标系不同吧!