Я делаю 2D игру в VB.NET . Я использую только один объект шрифта для рисования строк в форме. Этот шрифт нужен только в Игровом меню . Поэтому я избавляюсь от шрифта, когда он не нужен, и инициализирую его снова, когда это необходимо.
font_1 = New Font ("Autobus Bold", 15.0)
Когда я используюэтот шрифт (font_1) для рисования строки в форме, я получаю эту ошибку.
Произошло необработанное исключение типа 'System.ArgumentException' в System.Drawing.dll
Дополнительная информация: параметр недействителен.
Когда я просматриваю шрифт, он показывает,
{Имя = Ссылка на элемент без общего доступа требует ссылки на объект,Размер = 15.0}
Эта ошибка не возникает, когда игровое меню загружается впервые (когда font_1 инициализируется впервые). Когда пользователь играет в игру, шрифт удаляется. Когда пользователь снова входит в Игровое меню , шрифт снова инициализируется перед использованием для рисования. Когда для рисования строки в окне используется шрифт, возникает эта ошибка.
Похоже, ошибка только в семействе шрифтов. Я видел этот вопрос на нескольких форумах, но никто не дал решения. (Это мой первый вопрос на форуме)
Отредактировано: я удалил шрифт (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, 0, 0, 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, 20, 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, 100, 80)
If mcExplode_TMER.Enabled Then gB.DrawImage(Explotion_IMG, Explotion_X, Explotion_Y, 100, 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", New Font("Autobus Bold", 15.0), textBrush(1), 102, 158)
gB.DrawString("Exit", New Font("Autobus Bold", 15.0), textBrush(2), 114, 218)
End Select
Me.CreateGraphics.DrawImage(backbuffer, 0, 0, 640, 480)
End Sub
Здесь textBrudh (0) - кисть. ГБ - Графический объект. ГБ успешно рисует фоновое изображение, прежде чем он рисует строку. Это происходит только тогда, когда отображается Игровое меню Ваша поддержка очень ценится.