TC官方合作论坛
标题:
大漠找多图问题
[打印本页]
作者:
luckyloop
时间:
2012-8-18 20:44
标题:
大漠找多图问题
请问大漠如何找多图?并返回第一个找图的坐标
大漠自带的教程里面那个表达式实在是看不懂:整型 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
载入成功后不知道怎么调用大漠的的找图函数。。。。
求大大请教....
作者:
TC兔子
时间:
2012-8-18 20:56
不知道你编译过没有,首先你的
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:"))
设置路径.
作者:
luckyloop
时间:
2012-8-18 21:07
不知道你编译过没有,首先你的
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函数,,可惜我看不懂,主要想学这个函数的使用方法,还请赐教!
作者:
TC兔子
时间:
2012-8-18 21:40
回复
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|~~~~~"
我也是现学现卖,不知道对错,希望对你有帮助!
作者:
luckyloop
时间:
2012-8-18 22:03
回复
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这两个数字是干嘛用的...
作者:
TC兔子
时间:
2012-8-18 22:09
回复
5楼
luckyloop
的帖子
string pic_info = dm.AppendPicAddr("E:\\TP\\0.bmp",12034,643)
这行代码你就错了,你必须定义一个空的pic_info,或者给这个字符串赋值,赋值内容又必须是:pic_info 字符串: 老的地址描述串
以下是摘抄大漠文档:
查找指定区域内的图片,位图必须是24位色格式,支持透明色,当图像上下左右4个顶点的颜色一样时,则这个颜色将作为透明色处理.
12034,634,我也不清楚,我猜他是代表的图片信息
作者:
TC兔子
时间:
2012-8-18 22:15
补充一句,有用的话,别忘了采纳`~~
作者:
luckyloop
时间:
2012-8-18 22:20
回复
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
作者:
TC兔子
时间:
2012-8-18 22:23
回复
8楼
luckyloop
的帖子
载入成功,不代表他的信息就是正确的.
作者:
tclhs
时间:
2012-10-19 18:22
都是英文多,还是喜欢用中文的,中文插件,有没有好的介绍下。
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1