VB:绘图示例—屏保软件设计2

来源:互联网 发布:弹窗推广软件 编辑:程序博客网 时间:2024/05/25 19:59

示例:仿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

 

说明:
    本例中须用到延时效果,VB中没有延时函数,只能用API来实现。把通用部分的sleep函数声明复制给学生就可以了。不必讲到哪里去找它,也不必讲API的概念。