1. 程式人生 > 其它 >【雜項】手動進行軟體觸控校準,簡單的區間對映。

【雜項】手動進行軟體觸控校準,簡單的區間對映。

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

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 軸 同理。

圖例如下:

所以你要找到觸控式螢幕的最大/最小值,配合顯示屏進行座標對映。

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

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