网络编程 | 站长之家 | 网页制作 | 图形图象 | 操作系统 | 冲浪宝典 | 软件教学 | 网络办公 | 邮件系统 | 网络安全 | 认证考试 | 系统进程
Firefox | IE | Maxthon | 迅雷 | 电驴 | BitComet | FlashGet | QQ | QQ空间 | Vista | 输入法 | Ghost | Word | Excel | wps | Powerpoint
asp | .net | php | jsp | Sql | c# | Ajax | xml | Dreamweaver | FrontPages | Javascript | css | photoshop | fireworks | Flash | Cad | Discuz!
当前位置 > 网站建设学院 > 网络编程 > Visual Basic
Tag:注入,存储过程,分页,安全,优化,xmlhttp,fso,jmail,application,session,防盗链,stream,无组件,组件,md5,乱码,缓存,加密,验证码,算法,cookies,ubb,正则表达式,水印,索引,日志,压缩,base64,url重写,上传,控件,Web.config,JDBC,函数,内存,PDF,迁移,结构,破解,编译,配置,进程,分词,IIS,Apache,Tomcat,phpmyadmin,Gzip,触发器,socket
网络编程:ASP教程,ASP.NET教程,PHP教程,JSP教程,C#教程,数据库,XML教程,Ajax,Java,Perl,Shell,VB教程,Delphi,C/C++教程,软件工程,J2EE/J2ME,移动开发
本月文章推荐
.将包含有Null结尾的字符串转换为.
.如何在Windows操作系统中改变文件.
.用CallByName函数实现字符动画.
.避免VisualBasic程序重复执行.
.Tag属性的妙用.
.VB利用高级音频函数编写多媒体播.
.一些字符串操作的问题和回答.
.VB5中远程数据库的访问.
.用VB开发与机器环境无关的程序.
.在VB6.0中实现动态统计报表.
.如何控制系统音量.
.VisualBasic概念.
.VBCOM基础讲座之创建第一个COM对.
.VB6.0中类聚集关系的实现.
.VB多媒体程序设计.
.电影结束画面的卷动效果.
.操作过程动态显示.
.VB取磁盘序列号卷标和文件系统类.
.VisualBasic的未来.
.VB编程问与答.

VB游戏写作技巧(1)秀图篇

发表日期:2006-2-27


一开始,我想先从游戏的图形先讲起好了,毕竟游戏最重要的就是画面,一个没有漂亮图形的游戏,我连碰都不想去碰。那该怎么处理游戏的图形呢?VB提供了一个非常好用的控制项--PictureBox,有了这个控制项我们才能轻松的在程式中秀出图形,现在就来看看PictureBox有那些特性可以让我们在游戏中使用。

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函数覆制过去就好了,不是很方便吗?->

上一篇:用VB编写DirectX7.0游戏(上) 人气:5188
下一篇:VB游戏写作技巧(2)网络篇 人气:3501
浏览全部Visual Basic的内容 Dreamweaver插件下载 网页广告代码 祝你圣诞节快乐 2009年新年快乐