MiniGUI里面支持屏幕校正

===简单回答 ===
MiniGUI里面支持屏幕校正,用户只需调用一个接口:
SetMouseCalibrationParameters( const POINT * src_pts, const POINT * dst_pts ),
注意:
在线程版,本接口在应用程序端调用, 而进程版在服务器程序端调用。

===详细回答===
校正原理:
当MiniGUI的输入设备为触摸屏设备时,从设备中读出的坐标值和实际点击的坐标 遵循 y=ax+b 关系式 (a、b 为系数, x为从设备中读出的坐标数据,y为实际的屏幕坐标)
所以得到那两个系数就可以正确的校正鼠标, Minigui里用一个函数接口就可以完成这些步骤:
SetMouseCalibrationParameters( const POINT * src_pts, const POINT * dst_pts ),

其中dst_pts 是五个点的屏幕坐标。
src_pts 为5个从设备中读出的坐标。
比如:
POINT src_pts [5] = {{5, 10}, {600, 20}, {620, 450}, {20, 470}, {310, 234}};
POINT dst_pts [5] = {{0, 0}, {639, 0}, {639, 479}, {0, 479}, {320, 240}};
利用这些数据,MiniGUI可以自动求出 a,b 系数,并且自动校正鼠标坐标。

实际应用:
1、线程版:
线程版只需参考mg-simple 里的 helloworld.c文件, 里面调用了SetMouseCalibrationParameters接口。
2、进程版:
进程版和线程版类似,不同的地方是SetMouseCalibrationParameters 接口在服务器端调用。

小技巧:
src_pts五个点的采样:

写一个主窗口的例子, 在 循环中填入下面的代码, 主窗口的风格不要标题栏,并且大小和屏幕的大小一样;
case MSG_LBUTTONDOWN:
printf("x:%d\n",lParam&0xffff);
printf("y:%d\n",(lParam&0xffff0000)>>16);
break;

点击dst_pts五个点的屏幕坐标, 然后把打印出来的坐标相应填写到src_pts 就好了。

转载于:https://www.cnblogs.com/sankye/articles/2780521.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值