我正在 VB.NET 中制作一个 2D游戏。我只使用一个字体对象在表单上绘制字符串。仅在游戏菜单中需要此字体。因此,我在不需要字体时进行处理,并在需要时再次对其进行初始化。
font_1 =新字体(“ Autobus Bold”,15.0)
当我使用此字体(font_1)在表单上绘制字符串时,出现此错误。
“ System.ArgumentException”类型的未处理异常发生在 System.Drawing.dll
其他信息:参数无效。
当我查看字体时,它会显示出来,
{名称=引用非共享成员需要引用对象。 大小= 15.0}
第一次加载游戏菜单(第一次初始化 font_1 时),不会发生此错误。当用户玩游戏时,将放置字体。当用户再次进入游戏菜单时,字体将再次初始化,然后再用于绘制。使用字体在窗口上绘制字符串时,会发生此错误。
似乎错误仅在字体系列内。我在几个论坛中都看到了这个问题,但是没有人提供解决方案。 (这是我在论坛上的第一个问题)
编辑:我删除了Font(font_1)。但是我仍然遇到同样的错误。这是绘制字符串的代码。
Private Sub mcFramesHandler_TIMER_Tick(sender As Object,e As EventArgs) Handles mcFramesHandler_TIMER.Tick gB.Clear(Color.Black) gB.DrawImage(Background_IMG,640,480) Select Case currentMode Case GameMode.OnGame If mcShoot_TIMER.Enabled Then gB.DrawImage(Bullet_IMG,Bullet_X,Bullet_Y,20,50) If mcEneshoot_TIMER.Enabled Then gB.DrawImage(EneBullet_IMG,EneBullet_X,EneBullet_Y,50) If Shooter_Lives Then gB.DrawImage(Shooter_IMG,Shooter_X,Bullet_Y_Def,100,105) If mcMoveEnemy_TIMER.Enabled Then gB.DrawImage(Enemy_IMG,Enemy_X,10,80) If mcExplode_TMER.Enabled Then gB.DrawImage(Explotion_IMG,Explotion_X,Explotion_Y,80) Case GameMode.Begining gB.DrawString("Start",New Font("Autobus Bold",15.0),textBrush(0),110,98) 'Error is generated in this line gB.DrawString("credits",textBrush(1),102,158) gB.DrawString("Exit",textBrush(2),114,218) End Select Me.CreateGraphics.DrawImage(backbuffer,480) End Sub
此处textBrudh(0)是画笔。 gB是图形对象。 gB在绘制字符串之前成功绘制了背景图像。仅在显示游戏菜单时才会发生 非常感谢您的支持。