TC官方合作论坛

标题: 如果我要找很多个图,每次找到图都要把鼠标移动找到的图的位置。每次都要写获得指令吗?? [打印本页]

作者: tclhs    时间: 2012-10-10 11:01
标题: 如果我要找很多个图,每次找到图都要把鼠标移动找到的图的位置。每次都要写获得指令吗??
我要找图,很多时,每找一次图都要写一次
逻辑型 获得
整型 x,y
字符型 鼠标横坐标,鼠标纵坐标
获得=鼠标.获取坐标(x,y)
鼠标横坐标=字符串.连接("鼠标当前X坐标 ",转换.整型转字符型(x))
鼠标纵坐标=字符串.连接("鼠标当前Y坐标 ",转换.整型转字符型(y))

每次要获得当前鼠标位置,每次都要写这指令,如果是十次,就要写十次了,有怎样简写的方法吗,有人会的详细说明下啊。

作者: subugui    时间: 2012-10-10 11:04
这是大神整理好的找图功能模块..可以直接调用的
http://bbs.tyuyan.com/thread-14927-1-1.html
作者: die13719076310    时间: 2012-10-10 11:11
函数简介:

查找指定区域内的图片,位图必须是24位色格式,支持透明色,当图像上下左右4个顶点的颜色一样时,则这个颜色将作为透明色处理.

这个函数可以查找多个图片,并且返回所有找到的图像的坐标.

函数原型:

string FindPicEx(x1, y1, x2, y2, pic_name, delta_color,sim, dir)

参数定义:

x1 整形数:区域的左上X坐标
y1 整形数:区域的左上Y坐标
x2 整形数:区域的右下X坐标
y2 整形数:区域的右下Y坐标
pic_name 字符串:图片名,可以是多个图片,比如"test.bmp|test2.bmp|test3.bmp"
delta_color 字符串:颜色色偏比如"203040" 表示RGB的色偏分别是20 30 40 (这里是16进制表示)
sim 双精度浮点数:相似度,取值范围0.1-1.0
dir 整形数:查找方向 0: 从左到右,从上到下 1: 从左到右,从下到上 2: 从右到左,从上到下 3: 从右到左, 从下到上
返回值:
字符串:
返回的是所有找到的坐标格式如下:"id,x,y|id,x,y..|id,x,y" (图片左上角的坐标)
比如"0,100,20|2,30,40" 表示找到了两个,第一个,对应的图片是图像序号为0的图片,坐标是(100,20),第二个是序号为2的图片,坐标(30,40)
作者: die13719076310    时间: 2012-10-10 11:13
大漠 找图扩展 然后分割坐标 数组接收   好像论坛有现成的可以借鉴 具体自己找
作者: tclhs    时间: 2012-10-10 11:14
回复 2楼subugui的帖子

我不要模块,我只要方法,那人写得我看不明,不同级别的所以我看不明白,实例更精简,好像他也没有怎说明移动详细。
作者: fire    时间: 2012-10-10 11:17
楼主大人,仔细分析一下



  1. 空间 测试
  2. //定义默认空间

  3. 整型 线程句柄
  4. 整型 窗口句柄

  5. 功能 逻辑型 什么()
  6.     循环(true)
  7.         整型 序号,x,y
  8.         序号=窗口.找图(窗口句柄,-634,-232,1366,768,"rc:战斗.bmp|rc:自动.bmp|rc:继续.bmp",#101010,0.8,1,x,y)
  9.         if(序号>=0)
  10.             窗口.鼠标左键单击(窗口句柄,x+4,y+2)
  11.             辅助.等待(444)
  12.         else
  13.             辅助.等待(444)
  14.         endif
  15.     循环结束
  16.     返回 真
  17. 功能结束

  18. 功能 逻辑型 退出_点击()
  19.     //这里添加你要执行的代码
  20.     线程.关闭(线程句柄)
  21.     辅助.退出()
  22.     返回 真
  23.     //函数返回语句
  24. 功能结束

  25. 功能 逻辑型 热键2_热键()
  26.     //这里添加你要执行的代码
  27.     线程.恢复(线程句柄)
  28.     返回 真
  29. 功能结束

  30. 功能 逻辑型 热键1_热键()
  31.     //这里添加你要执行的代码
  32.     线程.暂停(线程句柄)
  33.     返回 真
  34. 功能结束

  35. 功能 逻辑型 热键0_热键()
  36.     //这里添加你要执行的代码
  37.     线程.关闭(线程句柄)
  38.     窗口句柄=窗口.鼠标所在窗口句柄()
  39.     线程句柄=线程.开启("测试.什么","")
  40.     返回 真
  41. 功能结束

  42. 功能 逻辑型 销毁()
  43.     //这里添加你要执行的代码
  44.     线程.关闭(线程句柄)
  45.     返回 真
  46. 功能结束

  47. 空间结束
  48. //空间结束语句
复制代码


作者: tclhs    时间: 2012-10-10 11:31
回复 6楼fire的帖子

有点看明白了,将移动鼠标的看成一个变量,当找图找到时,返回值大时就调出来用,序号=里面要用到窗口句柄的啊,这个就不太明白,后面是图放的位置。。。里面加了暂停功能啊。
作者: fire    时间: 2012-10-10 11:41
回复 7楼tclhs的帖子

窗口句柄   是使用TC的后台功能
TC的找图如果返回的序号<0(通常是等于-1)就意味着没有找到图

开启,暂停,恢复,控制着线程,呢个循环又放在线程里面,这样可以达到控制那个循环的作用
作者: tclhs    时间: 2012-10-10 11:58
回复 8楼fire的帖子

如果不支持后台的,那窗口句柄,是不是就不要写了。学习了
作者: fire    时间: 2012-10-10 12:01
回复 9楼tclhs的帖子

如果不支持后台就不用 窗口功能
用图像.找图(-634,-232,1366,768,"rc:ss.bmp",#101010,0.8,1,x,y)
作者: tclhs    时间: 2012-10-10 12:06
回复 8楼fire的帖子

如果要获得当前鼠标坐标,就把你的这句
窗口.鼠标左键单击(窗口句柄,x+4,y+2)  //X+4和Y+2有什么用啊
改成
整型 x,y
字符型 鼠标横坐标,鼠标纵坐标
获得=鼠标.获取坐标(x,y)
鼠标横坐标=字符串.连接("鼠标当前X坐标 ",转换.整型转字符型(x))
鼠标纵坐标=字符串.连接("鼠标当前Y坐标 ",转换.整型转字符型(y))

是不是这样啊。
作者: fire    时间: 2012-10-10 12:12
回复 11楼tclhs的帖子

x+4和y+2是我的找到的图片后,鼠标点击(x+4.y+2)的坐标,返回的图片坐标和我想要的坐标有一点偏差而已

获取当前的鼠标坐标是你的方法,但是这样就和找图没什么关系了

找图更方便
作者: feng123144    时间: 2012-10-10 12:28
楼上说得很详细。
作者: tclhs    时间: 2012-10-10 16:19
学习了,呵呵




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1