2012-04-15 17 views
0

Ich baue ein 2D-Spiel, wo der Benutzer ein Kreis ist (: P) und die Feinde Rechtecke sind, die auf ihn kommen. Mein Problem ist jedoch, dass, wenn ich ein sehr schönes Bild des Raums, das ich im Internet gefunden habe, platzierte, der Bildschirm alles, was er hat, unter dieses Bild zieht. Alles funktioniert, ich kann immer noch sehen, wie mein Leben untergeht, wenn etwas mit mir kollidiert - abgesehen von der Tatsache, dass alles von diesem Bild verdeckt ist.Wie zeichne ich über ein Bild in VB.NET

Auf den Punkt gebracht, meine Frage ist: Wie kann ich alles im oberen Teil der Draw Sie - (Ich habe versucht, die mit dem Befehl ‚To Back Senden‘)

EDIT: Die Form zieht alles durch einen Timer, und die Benutzer steuert seinen Charakter durch Schlüssel. Das wird wahrscheinlich nicht helfen - aber wenn es das tut, ist es hier. Entschuldigung Leute dachten nicht, dass Sie den Code benötigen würden. Hier ist es:

In der mybase.load Prozedur: PicBackGround.Dock = DockStyle.Fill PicBackGround ist die Bildbox mit dem Bild.

Im Lackverfahren:

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) 

Ok: Der Spieler ist ein Rechteck rechts oben erklärt, Dim Player As New Rectangle(0, 0, 50, 50); Es gibt dann das Array Objects, das alle Daten über die Feinde speichert, die auf dem Player kommen. Current_Projectiles ist einfach ein Array zum Speichern von Daten über Rechtecke (Kugeln), die der Spieler abfeuert.

Alles, was Sie sonst noch wissen möchten, lassen Sie es mich wissen.

+0

Veröffentlichen Sie den Code, den Sie verwenden. Versetzen Sie die Zeichenkoordinaten, um das Bild zu kompensieren? –

+0

OK hat den Code hinzugefügt. Was denken Sie? – Azerty560

Antwort

2

Ja, ein Steuerelement überlappt alles, was Sie auf dem Formular zeichnen. Eine einfache Lösung besteht darin, stattdessen die BackgroundImage-Eigenschaft des Formulars zu verwenden. Oder zeichne das Bild selbst.

+0

Hey, Ich habe versucht, das Hintergrundbild - und Boom hat es nicht funktioniert. Ich löschte die Zeile: e.Graphics.Clear (Color.Black), und es funktioniert jetzt gut. Erstens, danke dafür. Zweitens möchte ich wissen, hat das Löschen dieser Zeile Konsequenzen - wie zu viel Stress auf GPU? – Azerty560

+1

Rechts, mit Clear() wird schwarz über das Hintergrundbild malen. Offensichtlich willst du es nicht. Und es wird * schneller * sein. –

+0

Richtig. Aber was macht es eigentlich? Wie den aktuellen Rahmen löschen? (Ich dachte, klar bedeutet, die Grafik zu löschen - also habe ich übermäßige Belastung auf GPU, da Sie mehr und mehr Frames jede Sekunde neu zeichnen) – Azerty560

Verwandte Themen