野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10663|回复: 7

关于遍历触摸区域的方法讨论

[复制链接]
发表于 2017-7-28 14:55:28 | 显示全部楼层 |阅读模式
假如我现在有一张小键盘图片贴在触摸屏上,如何高效地遍历这个区域来确定某个指定区域被触摸了呢?我现在的想法是先比对x轴,如果PID_INFO.x在某一个区域内,再比对y轴方向的。不知道有没有更好的方法来解决这种问题呢?先谢过~
部分代码如下:
  1. if (PID_INFO.x <= 50 && PID_INFO.x >= 0)
  2.         {
  3.                 if (PID_INFO.y <= 50 && PID_INFO.y >= 0)
  4.                 {
  5.                         //7
  6.                         if (data == 0)        //小数点前数据为0
  7.                         {
  8.                                 data_temp = data * 10 + 7;
  9.                                 data = data * 10 + 7;
  10.                         }
  11.                         else        //小数点前数据不为0,需要计算小数点前位数,后期再做小数点的事情
  12.                         {
  13.                                 data_temp = data * 10 + 7;
  14.                                 data = data * 10 + 7;
  15.                         }
  16.                 }
  17.                 if (PID_INFO.y <= 100 && PID_INFO.y >= 50)
  18.                 {
  19.                         //4
  20.                         if (data == 0)        //小数点前数据为0
  21.                         {
  22.                                 data_temp = data * 10 + 4;
  23.                                 data = data * 10 + 4;
  24.                         }
  25.                         else        //小数点前数据不为0,需要计算小数点前位数,后期再做小数点的事情
  26.                         {
  27.                                 data_temp = data * 10 + 4;
  28.                                 data = data * 10 + 4;
  29.                         }
  30.                 }
  31.                 if (PID_INFO.y <= 150 && PID_INFO.y >= 100)
  32.                 {
  33.                         //1
  34.                         if (data == 0)        //小数点前数据为0
  35.                         {
  36.                                 data_temp = data * 10 + 1;
  37.                                 data = data * 10 + 1;
  38.                         }
  39.                         else        //小数点前数据不为0,需要计算小数点前位数,后期再做小数点的事情
  40.                         {
  41.                                 data_temp = data * 10 + 1;
  42.                                 data = data * 10 + 1;
  43.                         }
  44.                 }
  45.                 if (PID_INFO.y <= 200 && PID_INFO.y >= 150)
  46.                 {
  47.                         //.
  48.                 }
  49.         }
复制代码


小键盘

小键盘

小键盘坐标

小键盘坐标

主题推荐

回复

使用道具 举报

发表于 2017-7-28 15:08:34 | 显示全部楼层
首先能想到的也就是这种方法,识别的时间应该都是ms或者us级别的,也很快。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-28 15:11:58 | 显示全部楼层
fire 发表于 2017-7-28 15:08
首先能想到的也就是这种方法,识别的时间应该都是ms或者us级别的,也很快。

谢谢版主,那我心里就有数了!
回复 支持 反对

使用道具 举报

发表于 2017-7-28 15:14:29 | 显示全部楼层
笔记本的自嘲 发表于 2017-7-28 15:11
谢谢版主,那我心里就有数了!

你这个按键的贴纸也不是贴满整个触摸屏的吧,搜索的时候都可以缩小空间来搜索,而并不用搜索整个触摸屏的空间。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-28 16:33:00 | 显示全部楼层
fire 发表于 2017-7-28 15:14
你这个按键的贴纸也不是贴满整个触摸屏的吧,搜索的时候都可以缩小空间来搜索,而并不用搜索整个触摸屏的 ...

是的,我只检索了小键盘区域的,并不是全屏幕检索。
回复 支持 反对

使用道具 举报

发表于 2017-8-6 22:13:56 | 显示全部楼层
根据贴图的大小确定坐标系,然后确定触摸位置在这个大的区域之中属于哪个小区域就行了,比如触摸位置120,240,贴图位置20(x1),220(x2),110(y1),310(y2)
那么相对坐标就是(100,130),然后100/(200/4),来计算横着属于第几个方块,然后再计算竖着属于第几个方块就可以了,if(x<100 && y<150)判断是否有效 if(abs(100%(200/4)-50) < 23)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-8-7 10:44:26 | 显示全部楼层
飔箣 发表于 2017-8-6 22:13
根据贴图的大小确定坐标系,然后确定触摸位置在这个大的区域之中属于哪个小区域就行了,比如触摸位置120,2 ...


这个方式还没用过,谢谢好汉的意见!!
回复 支持 反对

使用道具 举报

发表于 2017-8-8 18:00:28 来自手机 | 显示全部楼层
现在搞这个没意义,先学了三大系统再说
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-17 03:14 , Processed in 0.043655 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表