首先在上面的程序中加入一个函数SetNewDisplayMode,函数代码如下:
Private Function SetNewDisplayMode()
On Error GoTo
ErrHandler
Dim ddsd As DDSURFACEDESC2 Dim i As Long
i =
List1.ListIndex If i = -1 Then MsgBox "请在列表中选择一种显示模式", vbOKOnly,
"错误" Exit Function End If
objEnumModes.GetItem (i + 1),
ddsd
''设置协作模式 objDraw.SetCooperativeLevel Me.hWnd,
DDSCL_FULLSCREEN Or _ DDSCL_ALLOWMODEX Or
DDSCL_EXCLUSIVE
''设置显示模式 objDraw.SetDisplayMode
ddsd.lWidth,ddsd.lHeight, _ ddsd.ddpfPixelFormat.lRGBBitCount, _ 0,
DDSDM_DEFAULT
Me.Refresh
ErrHandler: Select Case
Err.Number Case 0 ''No Errors Case Else Err.Raise Err.Number,
Err.Source, Err.Description, Err.HelpContext, _ Err.HelpContext Call
Cleanup End Select End Function 在Command2的Click事件中加入以下代码: Dim
i
For i = 0 To Form1.Controls.Count -
1 Form1.Controls(i).Visible = False Next
i
SetNewDisplayMode | 再次运行程序,点击列表中的任意一个显示模式,然后点击"设置显示模式"按钮,可以看到屏幕的显示模式被设置成了你在列表中选择的模式。
上面介绍的是如何设置显示模式,下面介绍如何利用DirectSurface对象来进行图形绘制以及如何利用前台绘图平面同后台绘图平面相配合工作。这个程序要实现的目的是:在屏幕上显示一幅背景位图,然后有一个角色在屏幕上移动。为了实现上面的目的,我们需要建立四个绘图平面,一个主平面,就是程序运行时可以看到的平面;一个后台缓冲平面,用于进行图像操作;一个位图平面,用于显示背景位图;一个角色位图平面,用于显示角色位图。在程序运行时首先将背景位图贴到后台缓冲平面,然后将角色位图平面贴到后台缓冲平面,在后台缓冲平面输出一些提示文字,最后将后台缓冲平面的内容贴到主平面上。
|