利用vb作一个拼图小程序,请问高手
1、图片的切割(语法)
2、图片使用的控件和移动图片的算法
如有例子请给我一个,我这里谢谢了
也可告知算法
1、图片的切割(语法)
2、图片使用的控件和移动图片的算法
如有例子请给我一个,我这里谢谢了
也可告知算法
解决方案 »
- vb中编写的浏览器怎么总是在同一个窗口打开
- VB如何向指定窗口发送后台鼠标点击,窗口最小化后仍可工作?
- 如何给报表组脚上一个text1控件赋值
- 在VB内,用程序代码的方法,怎样将图片框内的图像清除?
- 急::请教:一条SQL语句,谢谢!!!!!!!在线等等
- 明天回家,今天给兄弟姐妹们先拜年喽……
- 报表打印问题(水晶报表)
- 密码问题挺烦人
- 再UP一下,我想要请教各位的就是,如何象搜索引擎那样如YAHOO.GOOGLE那样可以任意输入几个关键字,中间用空格间隔,就可以查询出符合条件
- 帮菜鸟看看这个问题
- 请问哪位高手知到有什么控件能在vb中播放gif动画。(可以给分)
- 在线等!!!!急!!高分相赠!!!!!!
1。图片的切割我不太清楚,不过API BitBlt应该可以做到
2. 图片使用的控件和移动图片的算法
以下面的样式为例:
在窗体上放17个picture. 每个picture直接留少许空位,为了区分是不同的picture
如下:
1 2 3 4
5 6 7 8
9 10 11 12
13 14 15 16 17
建立dim pictureInfo(17) as integer 的数组, 下标0不使用, 给予初值
1-17 分别为 1-17. 保留第n个picture中对应与原图的第N个位置.
然后将图片4*4分割后,分别bitblt到前16个picture
然后打乱图片位置. 方法如下
循环10次
随机选取 1-17的2个数, 比如5 和 7
交换5 和 7 的图片控件的图片, 交换pictureInfo(5) 和 pictureInfo(7)的值
结束循环
让用户拼图, 17号位置用来做移动缓存的. 必定有一个空位置, 初始化是17,
这样发现 pictureInfo(x) = 17 则让 picture17.visable=false 移动的时候可以
让用户点取false的那张图片的邻接图片,然后交换这2个图片(a,b)的内容,交换这个数组
下标为a,b的内容, 并且这个刚移动的位置(用户点取的图片)已经=17了.应该让他为.visable=false.好象这张
图片移走了当用户点取的是17号图的时候给予判断,发现
for i =1 to 16
if pictureInfo(i)<>i then exit for
next i
出来的时候i>16.即数组连续递增和原来初始化数组值一致, 表示拼图成功.
假设点取图片为序号a的图片(picturea):
if a-1>=1 and a-1 mod 4 <> 0 then '左边有位置
if pictureInfo(a-1)=17 then found:goto foundlabel
endif
if a+1<=16 and a+1 mod 4<>1 then '右边有位置
if pictureInfo(a+1)=17 then found:goto foundlabel
endif
if a-4>=1 then '上面有位置
if pictureInfo(a-4)=17 then found:goto foundlabel
endif
if a+4<=16 then '下面有位置
if pictureInfo(a+4)=17 then found:goto foundlabel
endif
exit sub
foundlabel:
'按上述方法处理移动
if a=17 then
if 数组递增 then
msgbox "成功, 重新来过吗"
end if
end if当然, 你可以用picture(0-17)数组, index=0的让他visable,
然后点击事件的时候直接a=index就可以了