MFC控件编程—坐标系转化

假定point为屏幕坐标系中的一点,求取实际图像中的对应点。

1)屏幕坐标系转化为用户坐标系

  This->ClientToScreen(&point)////点的坐标就转化为用户坐标系中的一个点。举例来说,如果是基于对话框编程,那么用户区就是整个对话框的范围。

2)用户坐标系转化为实际控件坐标系

  在基于对话框编程中,为了使得用户界面可视化友好,一般显示图像都会显示在Picture Control控件中,那么转化为控件坐标系中经过两个步骤:

首先获取控件的CWnd,然后调用ClientToScreen(&point),这里已然将用户坐标系当做空间坐标系的屏幕坐标系,那么point转化为实际控件坐标系中的点。

3)实际控件坐标系转化为图像中的点

  首先,获取控件的rect, GetDlgItem(IDC_****)->GetClientRect(&rect);

   然后,在控件坐标系内按比例转化成为图像坐标系。

   x=(int) point.x*1.0*image->width/rect.Width();

y=(int)bpoint.y*1.0*image->height/rect.Height();

反过程可以推出,由图像上的点到屏幕坐标系中点的还原过程。

猜你喜欢

转载自blog.csdn.net/anan1205/article/details/9335049