TC官方合作论坛

 找回密码
 立即注册
查看: 5910|回复: 9
打印 上一主题 下一主题

[已解决] 大漠找多图问题

[复制链接]
跳转到指定楼层
楼主
发表于 2012-8-18 20:44:10 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
请问大漠如何找多图?并返回第一个找图的坐标
大漠自带的教程里面那个表达式实在是看不懂:整型 pic_info = dm.AppendPicAddr(pic_info,12034,643)
是否是先载入图片到数组
这样载入图片可以吗?
i=0
while (i<685)
string str1=str.format("%s%d%s","e:\\",i,".bmp")
int yes=dm. LoadPic(str1)
if (yes)
i=i+1
else
help.messagebox("载入失败")
endif
endwhile

载入成功后不知道怎么调用大漠的的找图函数。。。。
求大大请教....
回复

使用道具 举报

沙发
发表于 2012-8-18 20:56:49 | 只看该作者
不知道你编译过没有,首先你的yes整型变量,这样,在if里面是不能通过编译的,因为if要求的是逻辑型.
在C语言里,大于0的整数是相当于true,但是在TC里,目前还不行.

接下来,使用大漠找多图,首先在空间名的上面加上#import "dm.dmsoft" dm
然后再需要使用的时候,这样使用

dm.FindPic(0,0,2000,2000,"1.bmp|2.bmp|3.bmp","000000",0.9,0,intX,intY)

就可以了.

需要注意的是,如果调用图片在TC资源里,必须在功能函数里,加上 dm.SetPath(help.getrcpath("rc:")) 设置路径.

回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2012-8-18 21:07:18 | 只看该作者
不知道你编译过没有,首先你的yes整型变量,这样,在if里面是不能通过编译的,因为if要求的是逻辑型.
[col......
TC兔子 发表于 2012-8-18 20:56:49

大大你好
if判断我会改,刚刚大意了,谢谢指出错误!

另外我要的是找大量图片,上千张的那种,,如果使用dm.FindPic函数 太慢,TC经常卡死,1000张图下来要30余秒
貌似载入图片到内存,利用数组找图会快点,我以前在按键上用的是361的找图插件,1000张下来只需3到5秒,可惜361插件不支持TC..
大漠里面有个找多图的dm.AppendPicAddr函数,,可惜我看不懂,主要想学这个函数的使用方法,还请赐教!
回复 支持 反对

使用道具 举报

地板
发表于 2012-8-18 21:40:09 | 只看该作者
回复 3楼luckyloop的帖子

因为这个是收费函数,很少关注.我刚才看了下,大概意思是你说的这个dm.AppendPicAddr是FindPicMem FindPicMemE 以及FindPicMemEx专用.
首先说的是dm.AppendPicAddr这个函数的三个参数
pic_info 字符串: 老的地址描述串
addr 整形数: 数据地址
size 整形数: 数据长度


大漠给出的例子是:
pic_info = ""
pic_info = dm.AppendPicAddr(pic_info,12034,643)
pic_info = dm.AppendPicAddr(pic_info,328435,8935)
pic_info = dm.AppendPicAddr(pic_info,809234,789)


这里的第一个 pic_info = "" 相当于 字符型 pic_info
接下来的三个表达式,都是通过AppendPicAddr这个函数,把新的内容给加进去,最终的结果是:
地址1,长度1|地址2,长度2.....|地址n,长度n这些东西,全都加到pic_info这一个字符里面,不然的话整个函数就太长了.


接下来是FindPicMem FindPicMemE 以及FindPicMemEx这两个函数了,如果上面的那个你理解了,这俩就很容易了,就是把图片信息以24位信息格式,全部都合并到pic_info这个字符里了,说白了,就相当于dm_ret = dm.FindPic(0,0,2000,2000,"1.bmp|2.bmp|3.bmp","000000",0.9,0,intX,intY)这里面的"1.bmp|2.bmp|3.bmp|~~~~~"


我也是现学现卖,不知道对错,希望对你有帮助!


回复 支持 反对

使用道具 举报

5#
 楼主| 发表于 2012-8-18 22:03:01 | 只看该作者
回复 4楼TC兔子的帖子

感谢这位大大的热心指导!
可惜我天生愚钝,未能理解。。。
我现在改成这样了,但是结果是返回找不到。。。。
int X,Y
string pic_info = dm.AppendPicAddr("E:\\TP\\0.bmp",12034,643)
if (pic_info=="")
    help.messagebox("载入失败")
else
endif

dm.FindPicMem (0,0,500,500,pic_info,"000000",0.9,0,X,Y)
if (X>0)
help.messagebox("找到了")
else
help.messagebox("没找到")
endif
而且不理解12034,643这两个数字是干嘛用的...
回复 支持 反对

使用道具 举报

6#
发表于 2012-8-18 22:09:44 | 只看该作者
回复 5楼luckyloop的帖子

string pic_info = dm.AppendPicAddr("E:\\TP\\0.bmp",12034,643)
这行代码你就错了,你必须定义一个空的pic_info,或者给这个字符串赋值,赋值内容又必须是:pic_info 字符串: 老的地址描述串

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

12034,634,我也不清楚,我猜他是代表的图片信息
回复 支持 反对

使用道具 举报

7#
发表于 2012-8-18 22:15:41 | 只看该作者
补充一句,有用的话,别忘了采纳`~~
回复 支持 反对

使用道具 举报

8#
 楼主| 发表于 2012-8-18 22:20:00 | 只看该作者
回复 6楼TC兔子的帖子

头都晕了,,,
现在我直接这样写,返回的也是没找到
dm.FindPicMem (0,0,500,500,"E:\\TP\\0.bmp","000000",0.9,0,X,Y)
if (X>0)
help.messagebox("找到了")
else
help.messagebox("没找到")
endif
下面的是先弹出E:\\TP\\0.bmp|12034,643,结果还是没找到
int X,Y
string pic_info=""
pic_info = dm.AppendPicAddr("E:\\TP\\0.bmp",12034,643)
if (pic_info=="")
    help.messagebox("载入失败")
else
help.messagebox(pic_info)
endif

dm.FindPicMem (0,0,500,500,pic_info,"000000",0.9,0,X,Y)
if (X>0)
help.messagebox("找到了")
else
help.messagebox("没找到")
endif
回复 支持 反对

使用道具 举报

9#
发表于 2012-8-18 22:23:28 | 只看该作者
回复 8楼luckyloop的帖子

载入成功,不代表他的信息就是正确的.
回复 支持 反对

使用道具 举报

10#
发表于 2012-10-19 18:22:46 | 只看该作者
都是英文多,还是喜欢用中文的,中文插件,有没有好的介绍下。
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-10-10 03:28 , Processed in 0.133076 second(s), 24 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

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