Hyperborejac:
Citat:
Kad ga budes startovao, bice ti jasno u cemu je problem. Dakle, kad se pctSlika pomjeri po vertikali, njena kopija gore ostaje, jer citavu formu cuvam kao bitmapu. Svakim klikom, bitmapu podesim kao pozadinu i spustim pctSliku... i tako stalno. To tako i treba da radi, problem je sto se nakon minimizovanja i ponovnog aktiviranja programa, sve te prosle kopije se izgube, dok konacna pctSlika, naravno, ostaje. Dakle, meni treba DA SVE OSTANU, sto i jeste slucaj dok se ne uradi minimizacija. Uzgred, ovo jeste citav kod i tacno, nema crtanja, jer sam htio da bude sto kraci (a ako se rijesi za ovaj slucaj, rijesio se i za sve ostale).
Code:
Private Sub bttnSpusti_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bttnSpusti.Click
Dim bmp As Bitmap
Dim tacka As Point
bmp = New Bitmap(Me.Width, Me.Height)
Me.BackgroundImage = bmp
tacka.Y = pctSlika.Location.Y + 40
tacka.X = pctSlika.Location.X
If (tacka.Y > 480) Then
bttnSpusti.Enabled = False
Else
pctSlika.Location = tacka
End If
End Sub
Ti ovde kreiraš bitmapu koja je po default-u transparentna i kad je staviš kao pozadinu forme ona sprečava crtanje pozadine forme (u stvari nikakvo iscrtavanje ove bitmape se ne dešava) tako da ti ostaje iscrtan picture box na prethodnoj poziciji - ovaj kod radi tačno ono što je i napisano, kad se forma minimizuje i ponovo prikaže onda je ona potpuno transparentna i prikazuje ono što je u pozadini. Ovaj tvoj pristup je vrlo čudan i u neku ruku pogrešan.
Evo ovde ti postujem kod koji radi ono što tebi treba samo obriši picture box sa forme i pokreni.
Code:
Private RedSquareLocation As Point
Private RedSquare As Bitmap
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim BackgroundBitmap As Bitmap
RedSquareLocation = New Point(16, -24)
RedSquare = Image.FromFile(CurDir() & "\crvena.jpg")
BackgroundBitmap = New Bitmap(Me.Width, Me.Height)
Me.BackgroundImage = BackgroundBitmap
Graphics.FromImage(Me.BackgroundImage).Clear(Me.BackColor)
MoveDown()
End Sub
Private Sub bttnIzlaz_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bttnIzlaz.Click
Me.Close()
End Sub
Private Sub bttnSpusti_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bttnSpusti.Click
MoveDown()
End Sub
Private Sub MoveDown()
Dim TempPoint As Point
TempPoint.Y = RedSquareLocation.Y + 40
TempPoint.X = RedSquareLocation.X
If (TempPoint.Y > 480) Then
bttnSpusti.Enabled = False
Else
Graphics.FromImage(Me.BackgroundImage).DrawImage(RedSquare, New Rectangle(TempPoint.X, TempPoint.Y, 32, 32))
RedSquareLocation = TempPoint
Me.Refresh()
End If
End Sub