笔者以上海获办世博会庆典为题材,构思了一则VB荧屏焰火(屏保)程序。程序运行时,“上海市”夜空五颜六色的焰火礼花绽放,屏幕下方“热烈欢呼上海市喜获举办2010年世博会”的红色字幕周而复始地缓慢移动。编译成 .EXE 可作为屏保程序。 1、准备焰火图样。打开WORD,建立一个 .doc新文件,把“剪贴画”中的火花图样逐个剪贴入文本中。火花图样也可从扫描图样或从数码照片获取,越多越好。再把这.doc文件粘贴到Windows附件的“画图” 中,对图样进行加工修改,并把背景填充为黑色(如图一),存盘备用。
2、用上述的方法构筑城市图景,(如图二)。有体现某一城市的标志性建筑最好(如上海市的电视塔)。
3、打开VB,建立一个新项目,把以下控件(命令纽、标签、图像、时钟、线段,均为二个和一个文本框)装入窗体的相关位置。
4、窗体内创建imgYh()图象控件数组,数组元素由焰火的图样数量而定,并把它们的Stretch属性一律改为True,把它们的Visible属性一律改为False,再把(图一)中的焰火图样,分别 “粘贴”装入各图象控件数组元素中。 5、用同样的方法把(图二)中的城市图景装入图象控件imgCd 完成好的窗体应如图三所示。
6、编写代码,清单如下: Option Explicit Dim Cdy As String Dim LeftCorner, TopCormer As Single Dim WidthOfYh, HeightOfYh Dim P, q, x, j, dx, ax, ay As Integer Private Sub Form_Load() Label1.Caption = "您若喜欢以下文本框内的文字,请点击发送按钮!" Text1.Text = "热烈欢呼上海市喜获举办2010年世界博览会! 把上海世博会办成丰富、精彩、难忘的世博会!" x = 10 ay = 1 dx = 1 P = 0 q = 0 TopCormer = 6000 Timer1.Interval = 200 Timer2.Interval = 20 End Sub Private Sub Command1_Click() Label1.Caption = "请在以下文本框内输入您喜欢的文字!(字数不限)" Text1.Text = "" Text1.SetFocus ' 使 Text1 获得焦点 End Sub Private Sub Command2_Click() Label2.Caption = Text1.Text Cdy = Label2.Caption WindowState = 2 ' 窗体最大化 frmYh.BackColor = vbBlack ' 窗体背景定为黑色 ' 隐蔽4个控件 Command1.Visible = False Command2.Visible = False Label1.Visible = False Text1.Visible = False
' 定义Label2 和imgCc大小和位置 Label2.Height = 600 Label2.Top = ScaleHeight - 600 Label2.Left = ScaleWidth imgCc.Height = 1400 imgCc.Width = ScaleWidth imgCc.Top = ScaleHeight - Label2.Height - imgCc.Height imgCc.Picture = imgCd.Picture ' 装入城市图景 P = 1 End Sub Private Sub Form_KeyDown(KeyCode As Integer, Shift As Integer) End ' 按任意键退出运行 End Sub Private Sub Timer1_Timer() If P = 1 Then ' 装入焰火图样 q = Int(16 * Rnd) imgCuYh.Picture = imgYh(q).Picture imgCuYh.Move LeftCorner, TopCormer, WidthOfYh, HeightOfYh Select Case dx Case 1 ' 焰火升空 ay = ay + 1 TopCormer = TopCormer - 5000 * x If ay = 2 Then dx = 2 Case 2 ' 焰火爆炸位置 If TopCormer < 0 Then TopCormer = 0 LeftCorner = LeftCorner - 2000 * x ' 焰火爆炸范围 WidthOfYh = WidthOfYh + 6000 * x HeightOfYh = HeightOfYh + 6000 * x If WidthOfYh > 9000 * x Then For j = 1 To 1000000: Next j '延时 ' 恢复数据 WidthOfYh = 200 HeightOfYh = 200 TopCormer = 6000 If 0.3 < x > 0.7 Then x = 0.5 LeftCorner = ScaleWidth * x Randomize x = Rnd ay = 0 dx = 1 End If End Select End If End Sub (部分控件的属性可在构筑窗体时参照图三设定)
复制本页网址和标题,发送给你QQ/Msn的好友一起分享
上一篇:VB编程之路-如何让界面美化
下一篇:VB调用Microsoft Agent控件与电脑交谈