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

 

 一):

 

 

   获取光标位置 可用 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控件的逻辑坐标:>     

 

 

你可能感兴趣的:(获取光标位置 并将其位置映射为上一博客中picture控件的逻辑坐标)