您的位置:首页 > 其它

获取光标位置 并将其位置映射为上一博客中picture控件的逻辑坐标

2009-10-13 17:09 429 查看
一):

获取光标位置 可用 GetCursorPos(&pt)函数

此函数的参数 为保存光标位置信息的指针,此指针指向一个CPoint 类型

具体如下:

CPoint pt;

GetCursorPos(&pt);

二): 此时,获得的鼠标为屏幕坐标,我们首先将其转换为客户坐标

ScreenToClient(&pt);

此时,pt为鼠标相对于对话框客户区的坐标

三): 将其转换为picture控件逻辑坐标

首先,获取picture控件的客户坐标,用来对鼠标坐标做转换比较

CRect rect;

CWnd *pwn=GetDlgItem(IDC_SHOW);

pwn->GetWindowRect(&rect);

ScreenToClient(rect);

然后,进行坐标转换,将鼠标位置与picture原点位置做比较,进而将鼠标位置映射为picture控件逻辑坐标

pt.x=(LONG)(((double)(pt.x-rect.left))/rect.Width()*cx); // cx为逻辑坐标x方向范围

pt.y=-(LONG)(((double)(pt.y-rect.bottom))/rect.Height()*cy); // 注意 前面有个负号, 因为逻辑坐标的y方向是向上的 客户坐标方向相反

这样就成功的将鼠标坐标pt转换为了picture控件的逻辑坐标:>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: