【雜項】手動進行軟件觸摸校準,簡單的區間映射。

客戶需要,做一下說明,原理如下。

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, in_min, out_min, out_max = 10, 680, 0, 640 結果爲 (320 - 10) * (640 - 0) / (680 - 10) + 0 = 296 。

即可知 觸摸屏上的 320 等於實際顯示屏上的 296 , 則 Y 軸 同理。

圖例如下:

所以你要找到觸摸屏的最大/最小值,配合顯示屏進行座標映射。

每次校準後,將其保存,供下次讀取即可。

該方法只是線性簡單的校準方法,不能很好的表現出觸摸屏的特性,如果有更復雜的精度要求,則採用更復雜的公式,依葫蘆畫瓢即可。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章