【杂项】手动进行软件触摸校准,简单的区间映射。

客户需要,做一下说明,原理如下。

static int map(int x, int in_min, int in_max, int out_min, int out_max)
{
  return (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min;
}

若显示屏幕尺寸 x y w h 为 0, 0, 640, 480

而触摸屏幕可能不完全等于显示屏大小,例如可能为 10, 0, 680, 460

假设输入点 X = 320 则可以通过公式 (x - in_min) * (out_max - out_min) / (in_max - in_min) + out_min 进行映射

则 in_min, int_max, out_min, out_max = 10, 680, 0, 640 结果为 (320 - 10) * (640 - 0) / (680 - 10) + 0 = 296 。

即可知 触摸屏上的 320 等于实际显示屏上的 296 , 则 Y 轴 同理。

图例如下:

所以你要找到触摸屏的最大/最小值,配合显示屏进行坐标映射。

每次校准后,将其保存,供下次读取即可。

该方法只是线性简单的校准方法,不能很好的表现出触摸屏的特性,如果有更复杂的精度要求,则采用更复杂的公式,依葫芦画瓢即可。

posted @ 2021-08-05 11:55  Juwan  阅读(268)  评论(0编辑  收藏  举报