VB随机图像的魅力

  • 来源: 互联网 作者: 若水   2008-03-17/16:10
  •      VB提供了相当强的文字输出和绘图功能, 可以在窗口或图形框中利用各种命令显示字体或绘制各种图形。灵活使用这些命令,不仅可以完成许多特殊的功能, 而且可以为Windows的程序界面增加许多活力。下面用简单的例子演示VB中随机动画的风采。

    (一)、随机文字动画

    在VB中可利用Print命令进行字符串的显示工作,此命令一般只在当前位置显示字符串, 但具体操作时可通过CurrentX和CurrentY 控制字符串显示位置,通过FontSize控制字体的尺寸, 通过ForeColor和BackColor控制字符的前景色和背景色。 如果把上述的各项属性值均采用RND 进行随机产生, 即会形成随机字符显示效果。比如在一个图形框中显示一些新年贺辞, 同时播放美妙的音乐, 那将是一份极好的新年礼物。需要注意一点,由于字体互相覆盖,长时间显示会使窗口显得乱一些,所以最好按一定时间用“CLS"命令进行窗口清除。此处说明一下颜色的控制技巧,如果使用QBColor(Rnd*15)方式定义随机颜色,只能在16种颜色中随机产生, 而采用RGB(Rnd*256,Rnd*256,Rnd*256)方式,则可以产生256*256*256种不同的颜色。具体操作方式请见文后Command1-Click事件中的代码。

    (二)、立体图形随机动画

    虽然直接利用绘图语句即可以实现简单的动画, 但如果通过这些命令绘制成一定的立体图形, 并实行随机动画操作, 那将更具有特殊的艺术效果。比如下面两行简单的命令将画出一个具有强烈立体感效果的三角锥体,其中(M,N)为锥体的顶端坐标:

    Picture1.Line(m,n+2.5*i)-(m+i/2,n+2*i),RGB(180,180,180)

    Picture1.Line(m,n+2.5*i)-(m-i/2,n+2*i),RGB(80,80,80)

    如果把屏幕的底色置为暗黄色, 在此窗口内的随机位置画出大小不一的三角锥, 就像在黄色的沙漠上建起了无数的金字塔, 具有一种特殊的情趣。具体操作方法请见文后程序中的Command2-Click事件中的代码。

    (三)、演示程序编制过程

    文后是一个完成上述随机动画的完整演示程序,需要在From1 窗体中安放一个图形框Picture1及三个命令按钮Command1-3, 然后把下面的代码填入相应的事件处。运行此程序之后, 按下按钮1 ,则在图形框中进行随机文字显示。按下按钮 2,则在图形框中随机显示三角锥体。按下按钮3,则退出程序。此程序在Windows 95系统上VB5.0 环境下调试通过。

    ′程序准备:

    Private Sub Form-Load()

    Command1.Caption = ″随机文字″

    Command2.Caption = ″立体图形″

    Command3.Caption = ″退出″

    Form1.ScaleMode = 1

    Picture1.ScaleMode = 1

    End Sub

    ′随机文字动画

    Private Sub Command1-Click()

    Picture1.Cls

    Do

    nn = Int(45 * Rnd)

    If nn > 0 Then

    Picture1.FontSize = nn

    End If

    Picture1.CurrentX = Rnd * Picture1.ScaleWidth - 1000

    Picture1.CurrentY = Rnd * Picture1.ScaleHeight

    Picture1.ForeColor = RGB(Rnd * 256, Rnd * 256, Rnd * 256)

    Picture1.Print ″随机 OK!″

    n = n + 1

    If n > 50 Then

    n = 0

    Picture1.BackColor = QBColor(Rnd * 15)

    End If

    DoEvents

    Loop

    End Sub

    ′立体随机动画

    Private Sub Command2-Click()

    Dim m, n

    Picture1.DrawWidth = 1

    Picture1.BackColor = RGB(210, 150, 0)

    Picture1.Cls

    Do

    m = Rnd * Picture1.ScaleWidth

    n = Rnd * Picture1.ScaleHeight - 500

    For i = 0 To Rnd * 800

    Picture1.Line (m, n + 2.5 * i)-(m + i / 2, n + 2 * i), RGB(180, 180, 180)

    Picture1.Line (m, n + 2.5 * i)-(m - i / 2, n + 2 * i), RGB(80, 80, 80)

    Next i

    DoEvents

    Loop

    End Sub

    ′结束程序

    Private Sub Command3-Click()

    End

    End Sub


    评论 {{userinfo.comments}}

    {{money}}

    {{question.question}}

    A {{question.A}}
    B {{question.B}}
    C {{question.C}}
    D {{question.D}}
    提交

    驱动号 更多