2012-04-15 2 views
0

Я строю 2D-игру, где пользователь представляет собой круг (: P), а враги - это прямоугольники, идущие на него. Тем не менее, моя проблема в том, что когда я разместил очень красивое изображение пространства, которое я нашел в Интернете, экран рисует все, что у него есть под этим изображением. Все работает, я все еще вижу, как мои жизни снижаются, когда что-то сталкивается со мной - кроме того, что все это скрыто этой картиной.Как рисовать над картиной в VB.NET

В общем, мой вопрос: Как я рисовать все Поверх этого - (я попытался с помощью «Send To Back» Command)

EDIT: Форма рисует все через таймер, и пользователь управляет своим персонажем с помощью клавиш. Это, вероятно, не поможет, но если это так, то здесь. Извините, люди не думали, что вам нужен код. Вот он:

В процедуре mybase.load: PicBackGround.Dock = DockStyle.Fill PicBackGround - это окно с изображением.

В процедуре краски:

e.Graphics.Clear(Color.Black) 
     e.Graphics.FillEllipse(Brushes.Orange, Player) 

     'Projectiles 
     Dim i As Integer = 0 
     Do 
      If Current_Projectile(i).IsEmpty = False Then e.Graphics.FillRectangle(Brushes.Red, Current_Projectile(i)) 
      i += 1 
     Loop Until i = UBound(Current_Projectile) 

     'Objects 
     i = 0 
     Do 
      If Objects(i).IsEmpty = False Then e.Graphics.FillRectangle(Brushes.Blue, Objects(i)) 
      i += 1 
     Loop Until i = UBound(Objects) 

Хорошо: Игрок прямоугольник объявлен на самом верху, Dim Player As New Rectangle(0, 0, 50, 50); Существует тогда массив объектов, в котором хранятся все данные о врагах, идущих на игрока, Current_Projectiles - это просто массив для хранения данных о прямоугольниках (пулях), которые игрок запускает.

Все, что вы хотите знать, просто дайте мне знать.

+0

Опубликуйте код, который используете. Вы компенсируете координаты чертежа, чтобы компенсировать изображение? –

+0

Хорошо добавил код. Как вы думаете? – Azerty560

ответ

2

Да, элемент управления перекрывает все, что вы рисуете на форме. Простым решением является использование свойства BackgroundImage формы. Или нарисуйте изображение самостоятельно.

+0

Эй, Я попытался установить фоновое изображение - и стрела не сработала. Я удалил строку: e.Graphics.Clear (Color.Black), и теперь она отлично работает. Во-первых, спасибо за это. Во-вторых, я хочу знать, удаляет ли эта строка последствия - как слишком много внимания на gpu? – Azerty560

+1

Правильно, используя Clear() будет рисовать черным по всему фону. Ясно, что вы этого не хотите. И это будет * быстрее *. –

+0

Справа. Но что это на самом деле? Как очистить текущий кадр? (Я думал, что ясное средство, как очистить графику, - поэтому я, несмотря на избыточное напряжение на графическом процессоре, поскольку вы перерисовываете все больше и больше кадров каждую секунду) – Azerty560

Смежные вопросы