VB查找窗体指定坐标范围内的控件
vb吧
全部回复
仅看楼主
level 7
a90620038
楼主
一楼保留
2024年11月26日 21点11分
1
level 7
a90620038
楼主
最近在开发小游戏,涉及范围判定,
窗体内需查找的控件名均为 image1(index)(控件数组,数组下标为1至50,height和width均为450缇),图中为绿色小方块
image1(index)在运行中是随机生成的,并不能事先得知坐标信息
起点指范围的左上角,终点指范围的右下角。单位为:缇
需要实现以下功能:
2024年11月26日 21点11分
2
level 7
a90620038
楼主
如图一:
检查该范围内有没有 image1(index)控件,如果没有则返回空字符""
2024年11月26日 21点11分
3
level 7
a90620038
楼主
如图二:
如果该范围内有image1(index)控件,则返回该image1(index)的坐标(left及top属性)(单位:缇,窗体默认单位)
2024年11月26日 21点11分
4
level 7
a90620038
楼主
如图三:
如果该范围有多个image1(index)控件,返回距离查找范围中心点(图中a点)最近的image1(index)的坐标
2024年11月26日 21点11分
5
level 7
a90620038
楼主
如图四:
将上面的矩形搜索范围优化为为圆形搜索范围
如图,只在该矩形的的内接圆范围内搜索
2024年11月26日 21点11分
6
level 9
klimaa
for each可以吧。
2024年11月27日 03点11分
7
ddwuzhenduo
这个办法可以的。但是要注意的是楼主给出的图二,好像是只要被搜索的控件区域与搜索区域有重复就算搜到的话,那就意味着要计算a点到控件(正方形)的距离。
2024年11月27日 05点11分
ddwuzhenduo
如果计算a点到正方形控件的距离,需要判断控件处于a点为原点坐标系的像限,控件左下、左上、右上、右下角坐标分别对应1、2、3、4像限的最近点
2024年11月27日 05点11分
ddwuzhenduo
如果把控件按点(中心)来对待,那就一切简单多了。不知我理解的对不对?请指正
2024年11月27日 05点11分
klimaa
@ddwuzhenduo
方形范围时,不一定计算距离,可以判断控件是不是在控制范围(橙色方框)的四角坐标范围内。不过这两个方法都有个缺点,就是在图四(圆形)范围时,会出现有边碰撞而角不碰撞的情况时,检测不到。看需要的精度了。讲大点,是计算机图形学,到距离上,就变成初中几何了。
2024年11月28日 02点11分
level 13
隨風🍁缒夢
建议用结构(VB中的Type),然后声明结构数组(数组中的每个元素都是一个结构),结构成员来包含一些需要的数据(包括图片及X、Y坐标)。因为控件都是object,结构在内存中是连续的一块,且比object内存开销少,适合大量的
2024年11月27日 11点11分
8
隨風🍁缒夢
还有程序中用像素就可以了,缇是VB里的,像素才是屏幕上的点
2024年11月27日 11点11分
klimaa
我昨天想过,要是我做会另外建个数组和控件对应,操作起来更简单一点。
2024年11月28日 02点11分
level 1
自己的帐号ok
vb 控件 图像 运动 既慢又闪烁 千万别用
练习的时候paint方法 练习自己绘图
SetBitmapBits
bitblt 等方法也可
dx7 dx8 能找到sdk 可用速度快多了
2025年01月14日 15点01分
9
klimaa
知道闪,能想起来用dx7,dx8的,肯定是老鸟了。账号丢了吗?
2025年01月15日 01点01分
1