Gå til innhold

Hvordan autoredraw background image


Anbefalte innlegg

Skrevet

Hei

 

Jeg lager en ting som beveger seg bortover med system.drawing sant.. liten 4 kant sak

 

men den etterlater jo seg en stripe bak...hvordan kan jeg få background image til å tegne seg oppigjen bak selv figuren...?

 

vb 7.0 ;)

Videoannonse
Annonse
Skrevet

Du kan jo rett og slett fylle hele formen med èn farge, slik at det forrige bildet blir fjernet:

 

' Har dog ikke fått testet koden, men jeg skulle tro den fungerer

Graphics.FromImage(Me.BackgroundImage).FillRectangle(Me.BackColor, Me.RectangleToClient)

Skrevet

En ting som er veldig vikitg: Bruk OnPaint, eller Paint event, ellers vil bildet flimre, med mindre du bruker en bitmap som backbuffer, men backbuffer er av en eller annen grunn utrolig tregt.

 

Hvis du vil tegne bildet på nytt manuelt (fordi figuren byttet plass) kaller du Invalidate()

Skrevet
En ting som er veldig vikitg: Bruk OnPaint, eller Paint event, ellers vil bildet flimre, med mindre du bruker en bitmap som backbuffer, men backbuffer er av en eller annen grunn utrolig tregt.

 

Hvis du vil tegne bildet på nytt manuelt (fordi figuren byttet plass) kaller du Invalidate()

5073627[/snapback]

 

Vent litt, hvordan hva?

Skrevet

Dim myrect As Rectangle = New Rectangle(0, 0, 32, 32)

Protected Override Sub OnPaint(sender As Object, e As PaintEventArgs)
 e.Graphics.FillRect(New SolidBrush(Me.BackColor), Me.Bounds)
 e.Graphics.FillRect(Brushes.Black, myrect)
End Sub

Protected Override Sub OnKeyDown(sender As Object, e As KeyEventArgs)
 Select Case e.KeyCode
   Case Keys.Left
     myrect.Offset(1, 0)
   Case Keys.Right
     myrect.Offset(-1, 0)
   Case Keys.Down
     myrect.Offset(0, 1)
   Case Keys.Up
     myrect.Offset(0, -1)
 End Select
 Invalidate()
End Sub

Skrevet

Er litt slapp akkurat nå.... beklager men jeg skrev dette i FireFox, så her er det ordentlige eksempelet :p

 

Dim myrect As Rectangle = New Rectangle(0, 0, 32, 32)

Protected Overrides Sub OnPaint(ByVal e As PaintEventArgs)
 e.Graphics.FillRectangle(New SolidBrush(Me.BackColor), Me.Bounds)
 e.Graphics.FillRectangle(Brushes.Black, myrect)
End Sub

Protected Overrides Sub OnKeyDown(ByVal e As KeyEventArgs)
 Select Case e.KeyCode
 	Case Keys.Left
   myrect.Offset(-1, 0)
 	Case Keys.Right
   myrect.Offset(1, 0)
 	Case Keys.Down
   myrect.Offset(0, 1)
 	Case Keys.Up
   myrect.Offset(0, -1)
 End Select
 Invalidate()
End Sub

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...