www.pudn.com > pm.zip > BLANKER.FRM
VERSION 5.00
Begin VB.Form DemoForm
BackColor = &H00000000&
Caption = "屏幕演示"
ClientHeight = 4380
ClientLeft = 960
ClientTop = 2535
ClientWidth = 7470
BeginProperty Font
Name = "MS Sans Serif"
Size = 8.25
Charset = 0
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
ForeColor = &H00000000&
Icon = "BLANKER.frx":0000
LinkMode = 1 'Source
LinkTopic = "Form1"
PaletteMode = 1 'UseZOrder
ScaleHeight = 4380
ScaleWidth = 7470
WhatsThisHelp = -1 'True
Begin VB.Timer Timer1
Interval = 1
Left = 6960
Top = 120
End
Begin VB.CommandButton cmdStartStop
BackColor = &H00000000&
Caption = "开始演示"
Default = -1 'True
BeginProperty Font
Name = "宋体"
Size = 9
Charset = 134
Weight = 700
Underline = 0 'False
Italic = 0 'False
Strikethrough = 0 'False
EndProperty
Height = 390
Left = 240
TabIndex = 0
Top = 120
Width = 1830
End
Begin VB.PictureBox picBall
AutoSize = -1 'True
BackColor = &H00000000&
BorderStyle = 0 'None
ForeColor = &H00FFFFFF&
Height = 480
Left = 1800
Picture = "BLANKER.frx":030A
ScaleHeight = 480
ScaleWidth = 480
TabIndex = 1
Top = 720
Visible = 0 'False
Width = 480
End
Begin VB.Image imgMoon
Height = 480
Index = 8
Left = 6360
Picture = "BLANKER.frx":0614
Top = 3720
Visible = 0 'False
Width = 480
End
Begin VB.Line linLineCtl
BorderColor = &H00FF0000&
BorderWidth = 5
Visible = 0 'False
X1 = 240
X2 = 4080
Y1 = 2760
Y2 = 2760
End
Begin VB.Image imgMoon
Height = 480
Index = 7
Left = 5760
Picture = "BLANKER.frx":091E
Top = 3720
Visible = 0 'False
Width = 480
End
Begin VB.Image imgMoon
Height = 480
Index = 6
Left = 5160
Picture = "BLANKER.frx":0C28
Top = 3720
Visible = 0 'False
Width = 480
End
Begin VB.Image imgMoon
Height = 480
Index = 5
Left = 4560
Picture = "BLANKER.frx":0F32
Top = 3720
Visible = 0 'False
Width = 480
End
Begin VB.Image imgMoon
Height = 480
Index = 4
Left = 3960
Picture = "BLANKER.frx":123C
Top = 3720
Visible = 0 'False
Width = 480
End
Begin VB.Image imgMoon
Height = 480
Index = 3
Left = 3360
Picture = "BLANKER.frx":1546
Top = 3720
Visible = 0 'False
Width = 480
End
Begin VB.Image imgMoon
Height = 480
Index = 2
Left = 2760
Picture = "BLANKER.frx":1850
Top = 3720
Visible = 0 'False
Width = 480
End
Begin VB.Image imgMoon
Height = 480
Index = 1
Left = 2160
Picture = "BLANKER.frx":1B5A
Top = 3720
Visible = 0 'False
Width = 480
End
Begin VB.Image imgMoon
Height = 480
Index = 0
Left = 1560
Picture = "BLANKER.frx":1E64
Top = 3720
Visible = 0 'False
Width = 480
End
Begin VB.Shape shpClone
BackColor = &H00000000&
BackStyle = 1 'Opaque
BorderColor = &H00FF0000&
FillColor = &H000000FF&
Height = 1215
Index = 0
Left = 240
Top = 720
Visible = 0 'False
Width = 1410
End
Begin VB.Shape Shape1
Height = 15
Left = 960
Top = 1080
Width = 15
End
Begin VB.Menu mnuOption
Caption = "选项(&O)"
Begin VB.Menu mnuLineCtlDemo
Caption = "直线跳跃(&J)"
Checked = -1 'True
End
Begin VB.Menu mnuCtlMoveDemo
Caption = "圆月反弹(&B)"
End
Begin VB.Menu mnuImageDemo
Caption = "旋转月亮(&S)"
End
Begin VB.Menu mnuShapeDemo
Caption = "形色变幻(&M)"
End
Begin VB.Menu mnuPSetDemo
Caption = "五彩碎片(&C)"
End
Begin VB.Menu mnuLineDemo
Caption = "交叉火力(&R)"
End
Begin VB.Menu mnuCircleDemo
Caption = "彩虹地毯(&W)"
End
Begin VB.Menu mnuScaleDemo
Caption = "彩色方块(&L)"
End
Begin VB.Menu sep1
Caption = "-"
End
Begin VB.Menu mnuExit
Caption = "退出(&X)"
End
End
End
Attribute VB_Name = "DemoForm"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = True
Attribute VB_Exposed = False
'--------------------------------------
'源程序的版权属原作者所有!
'所有源程序经过玫瑰雪儿检测,并保证通过。
'网名:玫瑰雪儿
'站点:rosesnow.onchina.net
'E_mail:zhaosihua@263.net
'欢迎访问我的网站,并提出宝贵意见或建议
'--------------------------------------
Option Explicit
' 声明一个追踪动画帧的变量
Dim FrameNum
' 声明追踪位置的 X- 和 Y-坐标变量
Dim XPos
Dim YPos
' 声明 Do Loops 中停止图像过程的变量标志
Dim DoFlag
' 声明追踪动态控件的变量
Dim Motion
' 声明代表三个基本色的变量
Dim R
Dim G
Dim B
Private Sub CircleDemo()
'声明局部变量
Dim Radius
' 创建随机RGB 颜色
R = 255 * Rnd
G = 255 * Rnd
B = 255 * Rnd
' 将圆心置在窗体中心
XPos = ScaleWidth / 2
YPos = ScaleHeight / 2
' 产生一个值在 0与几乎窗体高度一半之间的半径
Radius = ((YPos * 0.9) + 1) * Rnd
'在窗体上画一个圆
Circle (XPos, YPos), Radius, RGB(R, G, B)
End Sub
Private Sub cmdStartStop_Click()
' 声明局部变量
Dim UnClone
Dim MakeClone
Dim X1
Dim Y1
Select Case DoFlag
Case True
cmdStartStop.Caption = "开始演示"
DoFlag = False
mnuOption.Enabled = True
If mnuCtlMoveDemo.Checked = True Then
' 再次隐藏动态画面
picBall.Visible = False
ElseIf mnuLineDemo.Checked = True Then
' 从窗体上清除线条
Cls
ElseIf mnuShapeDemo.Checked = True Then
' 清除所有动态装载的模型控件
For UnClone = 1 To 20
Unload shpClone(UnClone)
Next UnClone
' 将窗体背景再设为黑色
DemoForm.BackColor = QBColor(0)
' 刷新窗体使颜色的改变产生作用
Refresh
ElseIf mnuPSetDemo.Checked = True Then
' 从窗体中删除彩色点
Cls
ElseIf mnuLineCtlDemo.Checked = True Then
' 再次隐藏 Line 控件
linLineCtl.Visible = False
' 隐藏 Line 控件后清除剩下的残图
Cls
ElseIf mnuImageDemo.Checked = True Then
' 再次隐藏动态图形
imgMoon(0).Visible = False
ElseIf mnuScaleDemo.Checked = True Then
' 清窗体
Cls
' 返回窗体到缺省的尺寸
Scale
ElseIf mnuCircleDemo.Checked = True Then
' 从窗体中清除圆
Cls
End If
Case False
cmdStartStop.Caption = "停止演示"
DoFlag = True
mnuOption.Enabled = False
If mnuCtlMoveDemo.Checked = True Then
' 使动态画面(picture box 控件)可见
picBall.Visible = True
' 随机设置动态画面中 motion变量值从1 到4,
' motion变量值决定运行 Do Loop 程序中的哪个部分
Motion = Int(4 * Rnd + 1)
ElseIf mnuLineDemo.Checked = True Then
' 初始化随机数产生器
Randomize
' 设置线宽
DrawWidth = 2
' 在窗体上随机设置X- 和 Y-坐标的初始位置
X1 = Int(DemoForm.Width * Rnd + 1)
Y1 = Int(DemoForm.Height * Rnd + 1)
ElseIf mnuShapeDemo.Checked = True Then
' 在窗体上动态加载含 20 个 模型控件的控件数组
For MakeClone = 1 To 20
Load shpClone(MakeClone)
Next MakeClone
ElseIf mnuPSetDemo.Checked = True Then
' 设置彩色点的厚度
DrawWidth = 5
ElseIf mnuLineCtlDemo.Checked = True Then
' 使(line) 控件可见
linLineCtl.Visible = True
' 设置线显示的厚度
DrawWidth = 7
ElseIf mnuImageDemo.Checked = True Then
' 使动态画面(image 控件)可见
imgMoon(0).Visible = True
' 设置初始动画帧
FrameNum = 0
'随机设置动态画面中 motion变量值从1 到4,
' motion变量值决定运行 Do Loop 程序中的哪个部分
Motion = Int(4 * Rnd + 1)
ElseIf mnuScaleDemo.Checked = True Then
' 初始化随机数产生器
Randomize
' 设置方块的轮廓宽度使方块间不重叠
DrawWidth = 1
' 设置 X-坐标值为窗体左边界
' 第一个方块的 X-坐标 = 1,第二个=2 依次类推
ScaleLeft = 1
' 设置窗体顶端的Y-坐标为10
ScaleTop = 10
' 设置窗体宽度上单元数为 3 到 12 之间的随机数,这将改变程序开始时所画的方块数。
ScaleWidth = Int(13 * Rnd + 3)
' 设置窗体高度上单元数为-10,所有方块的高度在0 到10 之间
' Y-坐标从窗体底部开始。
ScaleHeight = -10
ElseIf mnuCircleDemo.Checked = True Then
' 定义圆轮廓宽度
DrawWidth = 1
' 用射线方式画圆
DrawStyle = vbDash
' 用 XOR pen画线,用 pen 中或显示中的颜色画线,不能两者均使用
DrawMode = vbXorPen
End If
End Select
End Sub
Private Sub CtlMoveDemo()
Select Case Motion
Case 1
' 用MOVE方法将图向上向左移动 20 缇
picBall.Move picBall.Left - 20, picBall.Top - 20
' 如果图到达窗体左边界,向上向右移动
If picBall.Left <= 0 Then
Motion = 2
' 如果图到达窗体顶端,向下向左移动
ElseIf picBall.Top <= 0 Then
Motion = 4
End If
Case 2
' 将图向上向右移动 20 缇
picBall.Move picBall.Left + 20, picBall.Top - 20
' 如果图到达窗体右边界,向上向左移动
' 程序通过窗体宽度减去图宽度获得窗体右边界
If picBall.Left >= (DemoForm.Width - picBall.Width) Then
Motion = 1
' 如果图到达窗体顶端,向下向右移动
ElseIf picBall.Top <= 0 Then
Motion = 3
End If
Case 3
' 向下向右移动 20 缇
picBall.Move picBall.Left + 20, picBall.Top + 20
' 如果图到达窗体右边界,向下向左移动
If picBall.Left >= (DemoForm.Width - picBall.Width) Then
Motion = 4
' 如果图到达窗体底端,向上向右移动,程序通过窗体高度减去图高度
' 并减去主题条和菜单条占的680缇决定窗口底端
ElseIf picBall.Top >= (DemoForm.Height - picBall.Height) - 680 Then
Motion = 2
End If
Case 4
' 向下向左移动 20 缇
picBall.Move picBall.Left - 20, picBall.Top + 20
' 如果图到达窗体左边界,向下向右移动
If picBall.Left <= 0 Then
Motion = 3
' 如果图到达窗体底端,向上向左移动
ElseIf picBall.Top >= (DemoForm.Height - picBall.Height) - 680 Then
Motion = 1
End If
End Select
End Sub
Private Sub Delay()
Dim Start
Dim Check
Start = Timer
Do Until Check >= Start + 0.15
Check = Timer
Loop
End Sub
Private Sub Form_Load()
DoFlag = False
End Sub
Private Sub Form_Resize()
If mnuScaleDemo.Checked = True And DemoForm.WindowState = 0 Then
' 初始化随机数产生器
Randomize
' 将方块的轮廓宽度设窄使方块间不重叠
DrawWidth = 1
' 将窗体左边界 x坐标值设为1。
' 这将使定位每个方块位置更容易。第一个方块的X坐标值设为1。
' 第二个方块的X坐标值设为。以此类推。
ScaleLeft = 1
' 设置窗体顶端的Y-坐标为10
ScaleTop = 10
' 设置窗体宽度上单元数在 3 到 12 之间。
' 这将改变每次用户开始这个过程时所画的方块数。
ScaleWidth = Int(13 * Rnd + 3)
' 设置窗体高度上单元的数为-10。这样做有两种作用,首先所有方块高度值在0到10间改变。
' 其次,负值使Y坐标从窗体底部开始而不是顶部o
ScaleHeight = -10
End If
End Sub
Private Sub Form_Unload(Cancel As Integer)
End
End Sub
Private Sub ImageDemo()
Select Case Motion
Case 1
'用MOVE方法将图向上向左移动 100 缇。
imgMoon(0).Move imgMoon(0).Left - 100, imgMoon(0).Top - 100
' 动画到下一帧。
IncrFrame
' 如果图到达窗体左边界,向上向右移动。
If imgMoon(0).Left <= 0 Then
Motion = 2
' 如果图到达窗体顶端,向下向左移动。
ElseIf imgMoon(0).Top <= 0 Then
Motion = 4
End If
Case 2
'将图向上向右移动 100 缇。
imgMoon(0).Move imgMoon(0).Left + 100, imgMoon(0).Top - 100
' 动画到下一帧。
IncrFrame
' 如果到达窗体右边界,向上向左移动。
' 程序通过窗体宽度减去图宽度获得窗体右边界。
If imgMoon(0).Left >= (DemoForm.Width - imgMoon(0).Width) Then
Motion = 1
' 如果图到达窗体顶端,向下向右移动。
ElseIf imgMoon(0).Top <= 0 Then
Motion = 3
End If
Case 3
' 将图向下向右移动 100 缇。
imgMoon(0).Move imgMoon(0).Left + 100, imgMoon(0).Top + 100
' 动画到下一帧。
IncrFrame
' 如果到达右边界,向下向左移动。
If imgMoon(0).Left >= (DemoForm.Width - imgMoon(0).Width) Then
Motion = 4
' 如果图到达窗体底端,向上向右移动。
' 程序通过窗体高度减去图高度
' 并减去主题条和菜单条占的680缇决定窗口底端
ElseIf imgMoon(0).Top >= (DemoForm.Height - imgMoon(0).Height) - 680 Then
Motion = 2
End If
Case 4
' 将图向下向左移动 100缇。
imgMoon(0).Move imgMoon(0).Left - 100, imgMoon(0).Top + 100
' 动画到下一帧。
IncrFrame
' 如果图到达窗体左边界,向下向右移动。
If imgMoon(0).Left <= 0 Then
Motion = 3
' 如果图到达窗体底端,向上向左移动。
ElseIf imgMoon(0).Top >= (DemoForm.Height - imgMoon(0).Height) - 680 Then
Motion = 1
End If
End Select
End Sub
Private Sub IncrFrame()
' 帧数加1。
FrameNum = FrameNum + 1
' 动画帧控件数组有元素 0 到 元素 7,在最后一帧将帧设为第0帧使动画循环。
If FrameNum > 8 Then
FrameNum = 1
End If
' 将(IMAGE)控件的图像特性设为当前帧的图像特性。
imgMoon(0).Picture = imgMoon(FrameNum).Picture
' 延迟显示使动画不至太快。
Me.Refresh
Delay
End Sub
Private Sub LineCtlDemo()
' 在窗体上随机设线的起点坐标。
linLineCtl.X1 = Int(DemoForm.Width * Rnd)
linLineCtl.Y1 = Int(DemoForm.Height * Rnd)
'在窗体上随机设线的终点坐标。
linLineCtl.X2 = Int(DemoForm.Width * Rnd)
linLineCtl.Y2 = Int(DemoForm.Height * Rnd)
' 清屏
Cls
'在移动线之前延迟显示。
Delay
End Sub
Private Sub LineDemo()
' 局部变量声明
Dim X2
Dim Y2
' 创建随机 RGB 颜色
R = 255 * Rnd
G = 255 * Rnd
B = 255 * Rnd
' 在窗体上随机设(line)控件的终点位置。
X2 = Int(DemoForm.Width * Rnd + 1)
Y2 = Int(DemoForm.Height * Rnd + 1)
' 用(LINE)方法从当前坐标画到当前终点,颜色随机,每条线起点为上一条线的终点。
Line -(X2, Y2), RGB(R, G, B)
End Sub
Private Sub mnuCircleDemo_Click()
Cls
mnuCtlMoveDemo.Checked = False
mnuLineDemo.Checked = False
mnuShapeDemo.Checked = False
mnuPSetDemo.Checked = False
mnuLineCtlDemo.Checked = False
mnuImageDemo.Checked = False
mnuScaleDemo.Checked = False
mnuCircleDemo.Checked = True
End Sub
Private Sub mnuCtlMoveDemo_Click()
Cls
mnuCtlMoveDemo.Checked = True
mnuLineDemo.Checked = False
mnuShapeDemo.Checked = False
mnuPSetDemo.Checked = False
mnuLineCtlDemo.Checked = False
mnuImageDemo.Checked = False
mnuScaleDemo.Checked = False
mnuCircleDemo.Checked = False
End Sub
Private Sub mnuExit_Click()
End
End Sub
Private Sub mnuImageDemo_Click()
Cls
mnuCtlMoveDemo.Checked = False
mnuLineDemo.Checked = False
mnuShapeDemo.Checked = False
mnuPSetDemo.Checked = False
mnuLineCtlDemo.Checked = False
mnuImageDemo.Checked = True
mnuScaleDemo.Checked = False
mnuCircleDemo.Checked = False
End Sub
Private Sub mnuLineCtlDemo_Click()
Cls
mnuCtlMoveDemo.Checked = False
mnuLineDemo.Checked = False
mnuShapeDemo.Checked = False
mnuPSetDemo.Checked = False
mnuLineCtlDemo.Checked = True
mnuImageDemo.Checked = False
mnuScaleDemo.Checked = False
mnuCircleDemo.Checked = False
End Sub
Private Sub mnuLineDemo_Click()
Cls
mnuCtlMoveDemo.Checked = False
mnuLineDemo.Checked = True
mnuShapeDemo.Checked = False
mnuPSetDemo.Checked = False
mnuLineCtlDemo.Checked = False
mnuImageDemo.Checked = False
mnuScaleDemo.Checked = False
mnuCircleDemo.Checked = False
End Sub
Private Sub mnuPSetDemo_Click()
Cls
mnuCtlMoveDemo.Checked = False
mnuLineDemo.Checked = False
mnuShapeDemo.Checked = False
mnuPSetDemo.Checked = True
mnuLineCtlDemo.Checked = False
mnuImageDemo.Checked = False
mnuScaleDemo.Checked = False
mnuCircleDemo.Checked = False
End Sub
Private Sub mnuScaleDemo_Click()
Cls
mnuCtlMoveDemo.Checked = False
mnuLineDemo.Checked = False
mnuShapeDemo.Checked = False
mnuPSetDemo.Checked = False
mnuLineCtlDemo.Checked = False
mnuImageDemo.Checked = False
mnuScaleDemo.Checked = True
mnuCircleDemo.Checked = False
End Sub
Private Sub mnuShapeDemo_Click()
Cls
mnuCtlMoveDemo.Checked = False
mnuLineDemo.Checked = False
mnuShapeDemo.Checked = True
mnuPSetDemo.Checked = False
mnuLineCtlDemo.Checked = False
mnuImageDemo.Checked = False
mnuScaleDemo.Checked = False
mnuCircleDemo.Checked = False
End Sub
Private Sub PSetDemo()
' 创建随机 RGB 颜色
R = 255 * Rnd
G = 255 * Rnd
B = 255 * Rnd
' XPos 决定彩色点在窗体中的随机水平位置
XPos = Rnd * ScaleWidth
' YPos 决定彩色点在窗体中的随机垂直位置
YPos = Rnd * ScaleHeight
' 以随机色在 XPos, YPos 画一个彩色点
PSet (XPos, YPos), RGB(R, G, B)
End Sub
Private Sub ScaleDemo()
' 局部变量声明
Dim Box
' 创建和窗体宽度的单元数相同的方块数。
For Box = 1 To ScaleWidth
' 创建随机 RGB 颜色
R = 255 * Rnd
G = 255 * Rnd
B = 255 * Rnd
' 用 Line 方法的 BF 选项画方块。ScaleWidth决定每个方块的X-坐标,且 Y-坐标为 0。
' 每个方块宽为 1,高在 0 到 10 之间。颜色随机
Line (Box, 0)-Step(1, (Int(11 * Rnd))), RGB(R, G, B), BF
Next Box
' 重画前延迟显示所有方块。
Delay
End Sub
Private Sub ShapeDemo()
' 局部变量声明
Dim CloneID
' 创建随机 RGB 颜色
R = 255 * Rnd
G = 255 * Rnd
B = 255 * Rnd
' 设置窗体背景色为随机值
DemoForm.BackColor = RGB(R, G, B)
' 在控件数组中随机选择控件
CloneID = Int(20 * Rnd + 1)
' 在窗体中随机设置模型控件显示坐标
XPos = Int(DemoForm.Width * Rnd + 1)
YPos = Int(DemoForm.Height * Rnd + 1)
' 在被选模型控件中随机设模型
shpClone(CloneID).Shape = Int(6 * Rnd)
' 被选模型控件宽和高随机设为 500 到 2500 缇之间
shpClone(CloneID).Height = Int(2501 * Rnd + 500)
shpClone(CloneID).Width = Int(2501 * Rnd + 500)
' 设置背景色,模型控件的DrawMode特性为随机色。
shpClone(CloneID).BackColor = QBColor(Int(15 * Rnd))
shpClone(CloneID).DrawMode = Int(16 * Rnd + 1)
' 移动选定的模型控件至 XPos, YPos
shpClone(CloneID).Move XPos, YPos
' 使被选定的模型控件可见
shpClone(CloneID).Visible = True
' 在选择并改为下一个模型控件前延迟一会
Delay
End Sub
Private Sub Timer1_Timer()
If mnuCtlMoveDemo.Checked And DoFlag = True Then
CtlMoveDemo
ElseIf mnuLineDemo.Checked And DoFlag = True Then
LineDemo
ElseIf mnuShapeDemo.Checked And DoFlag = True Then
ShapeDemo
ElseIf mnuPSetDemo.Checked And DoFlag = True Then
PSetDemo
ElseIf mnuLineCtlDemo.Checked And DoFlag = True Then
LineCtlDemo
ElseIf mnuImageDemo.Checked And DoFlag = True Then
ImageDemo
ElseIf mnuScaleDemo.Checked And DoFlag = True Then
ScaleDemo
ElseIf mnuCircleDemo.Checked And DoFlag = True Then
CircleDemo
End If
End Sub