您的位置:程序门 -> vb -> 控件



如何实现控件移动且不超越边界、不重叠?请大侠们帮忙!


[收藏此页] [打印本页]选择字色:背景色:字体:[][][]


如何实现控件移动且不超越边界、不重叠?请大侠们帮忙!
发表于:2007-02-05 14:05:29 楼主
在一个picturebox里放3-4个文本框或者标签框。
1.在这个picturebox中实现这些控件的自由移动.
2.控件的移动范围不能超过picturebox的大小。一旦接触到picturebox的边界需要给出提示或者控件自动回到原位。
3.控件之间不能重叠,一旦任意两个控件重叠放置,需要给出提示或者控件自动回到原位。
谢谢各位大侠!!小弟有理了!
发表于:2007-02-05 19:46:591楼 得分:0
我以前做过一个类似桌球的碰撞程序,应该很容易实现你要的功能,可惜太久了找不到源码,给个思路,自己写代码试试

1.在这个picturebox中实现这些控件的自由移动.

  先对所有的标签(或tetxbox)各自产生一个随机方向代码(一般是1-8,1:向上,2:右上,3:向右...);   设置一个timer控件,在里面用move方法结合方向代码对各个标签进行移动,如方向代码是1,则每执行一次timer该标签y=y-1(像素),x不变,就实现了标签向上移动......

2.控件的移动范围不能超过picturebox的大小。一旦接触到picturebox的边界需要给出提示或者控件自动回到原位。

  按照1产生的方向不断move标签,并不断判断标签范围是否超国picturebox,如果超过,就随机产生一个新的方向给该标签,让timer继续move改标签以实现边框碰撞弹回的效果(复杂一点可以增加一些角度计算模拟碰撞)

3.控件之间不能重叠,一旦任意两个控件重叠放置,需要给出提示或者控件自动回到原位。

  其实类似2,在timer过程中要不断记住每个标签的位置,再不断地判断本标签和其它标签的位置关系,和碰到picturebox边框的道理差不多,只是要增加一些循环判断


大概思路是这样,其中还要考虑一些精确位置,放置闪烁等问题,就不多说了
发表于:2007-02-05 19:47:362楼 得分:0
“放置闪烁”   是   “防止闪烁”


快速检索

最新资讯
热门点击