客戶需要,做一下說明,原理如下。
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 軸 同理。
圖例如下:
所以你要找到觸摸屏的最大/最小值,配合顯示屏進行座標映射。
每次校準後,將其保存,供下次讀取即可。
該方法只是線性簡單的校準方法,不能很好的表現出觸摸屏的特性,如果有更復雜的精度要求,則採用更復雜的公式,依葫蘆畫瓢即可。