1.11.3 关于窗口重绘的编码设计
我们的游戏程序中有个小小的问题,即:当其他窗口覆盖.Nettrix窗口时,游戏区域不能够重新绘制。可以通过在窗体的Activate事件中添加对GameField的Redraw方法的调用来解决上述问题(Activate事件发生在窗体每次重新获得已经丢失到其他窗口的输入焦点时)。
Private Sub NetTrix_Activated(ByVal Sender As Object, ByVal E As _
System.EventArgs) Handles MyBase.Activated
'This Event Occurs When The Window Receives Back The Focus
' After Losing It To Another Window
'So, We Redraw The Whole Game Field
'Clear The Game Field
PicBackground.Invalidate()
Application.DoEvents()
GameField.Redraw()
If Not (NextBlock Is Nothing) Then
NextBlock.Show(PicNextBlock.Handle)
End If
End Sub 'NetTrix_Activated
即便是使用这种方法,也会出现某些不能正确地重绘窗口的情况。为了获得最佳效果,我们还应当在定时器的Tick事件中添加对Redraw方法的调用,但这样又会降低游戏的运行速度,因此最好还是保持上面的代码不变。
接下来的章节将讨论一些建议,以便我们今后可以对该游戏程序进行改进。






