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();

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值