示例:仿windows98系统自带的三维管道屏保
屏保设计的趣味性在于它的不确定性。设计屏保程序用到的函数不多,代码也不多,即使不能达到预设的要求,也能在屏幕上看到各种意想不到的效果,有时可能会 歪打正着,得到一个奇特的动画效果。用两节课的时间,学生完全可以独立设计一个自己的屏保程序。利用随机数函数Rnd()的特性,可以创造出各种各样的奇 妙的画案动画。这对于激发学生的学习兴趣是个非常好的题材。
下面是一个仿windows98系统自带的三维管道屏保。三维的效果暂且就用直线代替了。下载中附源码和编译好的“三维管道.SCR”目标程序,用法在“VB:绘图示例—屏保软件设计1”中已有说明。
下载:
http://good.gd/780913.htm
附源码:
'新建一个vb程序,将窗口风格设置为无边框,即Me.BorderStyle = 0
'在窗口上添加一个时钟控件
'其他无须任何设置,复制下面的代码到编辑区,编辑即可
Private Declare Sub Sleep Lib "kernel32" ( ByVal dwMilliseconds As Long ) '延时函数sleep()的API
Dim px As Single '定义起始点x,y
Dim py As Single
Private Sub Form _Resize()
Me.BorderStyle = 0 '设置窗口为无边框
Me.BackColor = vbBlack '设窗口底色为黑色
Me.Top = 0
Me. Left = 0
Me.Height = Screen.Height '窗口充满屏幕
Me.Width = Screen.Width
Timer1.Interval = 500 '时钟间隔为半秒钟
End Sub
Private Sub Timer1_Timer() '时钟周期
Call tipe
End Sub
Private Sub tipe() '仿windows98系统自带的三维管道屏保
Static i As Integer '静态变量
Dim color As Integer
Dim x As Single '定义下一个自由点
Dim y As Single
Randomize '置随机数种子
Scale (0, 0)-(1024, 768) '重定义坐标系统
x = 1024 * Rnd
y = 768 * Rnd
color = 15 * Rnd '随随机色
If color = 0 Or color = 1 Or color = 8 Then color = 15 '替换与背景相似的颜色
Me.DrawMode = 7 '定义画笔模式,异或笔
Me.DrawWidth = 10 '定义画笔宽度
Line (px, py)-(x, py), QBColor(color)
Sleep 500 '延时500毫秒
Line (x, py)-(x, y), QBColor(color)
px = x
py = y
i = i + 1
If i > 40 Then '画30次后清屏
i = 0
Cls
End If
End Sub
Private Sub Form _KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 27 Or KeyCode = 13 Then
Call Form _DblClick '按ESC键或回车键退出屏保
End If
End Sub
Private Sub Form _DblClick()
Timer1.Interval = 0 '双击屏幕退出屏保
End
End Sub
'在窗口上添加一个时钟控件
'其他无须任何设置,复制下面的代码到编辑区,编辑即可
Private Declare Sub Sleep Lib "kernel32" ( ByVal dwMilliseconds As Long ) '延时函数sleep()的API
Dim px As Single '定义起始点x,y
Dim py As Single
Private Sub Form _Resize()
Me.BorderStyle = 0 '设置窗口为无边框
Me.BackColor = vbBlack '设窗口底色为黑色
Me.Top = 0
Me. Left = 0
Me.Height = Screen.Height '窗口充满屏幕
Me.Width = Screen.Width
Timer1.Interval = 500 '时钟间隔为半秒钟
End Sub
Private Sub Timer1_Timer() '时钟周期
Call tipe
End Sub
Private Sub tipe() '仿windows98系统自带的三维管道屏保
Static i As Integer '静态变量
Dim color As Integer
Dim x As Single '定义下一个自由点
Dim y As Single
Randomize '置随机数种子
Scale (0, 0)-(1024, 768) '重定义坐标系统
x = 1024 * Rnd
y = 768 * Rnd
color = 15 * Rnd '随随机色
If color = 0 Or color = 1 Or color = 8 Then color = 15 '替换与背景相似的颜色
Me.DrawMode = 7 '定义画笔模式,异或笔
Me.DrawWidth = 10 '定义画笔宽度
Line (px, py)-(x, py), QBColor(color)
Sleep 500 '延时500毫秒
Line (x, py)-(x, y), QBColor(color)
px = x
py = y
i = i + 1
If i > 40 Then '画30次后清屏
i = 0
Cls
End If
End Sub
Private Sub Form _KeyDown(KeyCode As Integer, Shift As Integer)
If KeyCode = 27 Or KeyCode = 13 Then
Call Form _DblClick '按ESC键或回车键退出屏保
End If
End Sub
Private Sub Form _DblClick()
Timer1.Interval = 0 '双击屏幕退出屏保
End
End Sub
说明:
本例中须用到延时效果,VB中没有延时函数,只能用API来实现。把通用部分的sleep函数声明复制给学生就可以了。不必讲到哪里去找它,也不必讲API的概念。