Picture属性:只要将这个属性填入正常的图形档名,VB就会自动帮我们载入图形档。
Visible属性:这个属性可以让图形消失或让图形出现在画面上。
用法:Form1.Picture1.Visible=False消失
Form1.Picture1.Visible=True出现
Left属性:表示图形的位置的X座标。
Top属性:表示图形的位置的Y座标。
用法:改变这两个属性就可以改变图形的位置。
ScaleMode属性:设定PictureBox所使用的座标单位,一般都设为"3-像素"
知道了PictureBox的特性後,要怎么样把它应用到游戏中呢?举个例子好了,我现在要做一个打砖块的游戏,需要用到那些图片呢?砖块、球、击球的板子,一共有三张图,所以我们就使用三个PictureBox,将图片载入到PictureBox里面,如下面所示:
Picture1砖块的图片
Picture2球的图片
Picture3板子的图片
接著我就可以写,当我按下方向键的右键时,Picture3的left属性 1,按下左键则-1,这样一来不就可以控制板子的左右移动了吗?球也是一样,只要每隔一段时间更改一次Picture2的left和top属性,就可以做出球移动的效果了。
或许有人会觉得奇怪,一张图就要用到一个PictureBox,小游戏的图不多还没关系,如果是RPG的话不就要动用到几千个甚至几万个PictureBox?岂不是麻烦死了?所以如果图片很多的时候,我通常都是把图全部都放在同一个图形档里面,这样就只要用到一个PictureBox了,要用图片时从里面把它抓出来就好了,不过要怎么抓呢?我建议使用函数BitBlt()来做图形的搬移。
使用BitBlt函数前要先宣告:
DeclareSubBitBltLib"gdi32"(ByValhDestDCAsLong,ByValXAsLong,ByValYAsLong,ByValnWidthAsLong,ByValnHeightAsLong,ByValhSrcDCAsLong,ByValxSrcAsLong,ByValySrcAsLong,ByValdwRopAsLong)
hDestDC目的地的DC
x目的地的座标x
y目的地的座标y
nWidth来源图片的宽度
nHight来源图片的高度
hSrcDC来源图片的DC
xsrc来源图片的座标x
ysrc来源图片的座标y
dwrop运算方法:&HCC0020PUT
&H8800C6AND
&HEE0086OR
&H660046XOR
现在有两个PictureBox
Picture1AutoRedRaw属性设为Ture
ScaleMode属性设为"3-像素"
Picture2AutoRedRaw属性设为Ture
ScaleMode属性设为"3-像素"
若想将Picture2里(10,10)-(100,100)区域内的图形拷贝到Picture1的(0,0)
可以这样写:
BitBltPicture1.hdc,0,0,90,90,Picture2.hdc,10,10,&HCC0020
这样子平常写游戏时就只要设两个PictureBox,一个专门用来显示,另一个则用来放图形资料,需要时再用BitBlt函数覆制过去就好了,不是很方便吗?->
文章整理:西部数码--专业提供域名注册、虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!


