Avatar billede rasmuss Nybegynder
07. august 2001 - 11:13 Der er 13 kommentarer og
1 løsning

Stop med at blinke!

Jeg har et STORT PROBLEM, og jeg ved ikke om det kan løses!, men problemet er følgende:

Når jeg f.eks vil have et stort billede til at bevæge sig tværs over skærmen så blinker det!.

Eller når jeg bare bevæger et lille Jpg billede over skærmen sker det samme! håber at det kan løses.

Ps:

600 Point!!!!!!!!!!!!
Avatar billede terry Ekspert
07. august 2001 - 11:18 #1
Dont know anything about this but at a guess, its your PC/Graphic card that is too slow due to the ammount of data your trying to show. Have you tried showing a lower resolution, also in your little JPG?
Avatar billede nomiz Nybegynder
07. august 2001 - 11:21 #2
Altsååå.... Tværs over skærmen? Med Visual Basic?
Avatar billede dribble Nybegynder
07. august 2001 - 11:24 #3
det kan måske være noget med din refresh rate

eller din skærm Hz ???
Avatar billede lala-joker Nybegynder
07. august 2001 - 11:27 #4
jeg ved godt hvorfor !
det sker også for mig !
men kun med winamp ( nye skins )
så hakker dennår jeg flytter den rundt på skærmen så hjælper det lige med en refresh !

men prøv at kør defragmenter eller scanddisk !

Start > programmer > tilbehør > systemværktøjer >

prøv jeg er sikker på det virker..
ellers så køb nogle flere ram eller noget !
det har tit noget med plads på computeren at gøre..

og det sker tiot med windows !

bruger du windows eller ?


/ lala Joker

ps. ryd lidt op så går fejlen væk ;-)
Avatar billede picard Nybegynder
07. august 2001 - 12:03 #5
Det er fordi den datamængde der beregnes er ganske stor. Hvis du vil have det til at køre hurtigere eller forhindrer at det blinker, så må du til at rode med noget DirectX. Så kan du udnytte dit/folks accl. grafikkort bedre.

Christian
Avatar billede picard Nybegynder
07. august 2001 - 12:04 #6
Hvordan ser ser din procedure ud der flytter billedet ?
Kan du ikke vise os noget kode ? Det kan jo være at den kan optimeres !
Avatar billede jelzin101 Praktikant
07. august 2001 - 12:16 #7
jeg har koden til en splash ting jeg lavede engang til et poolspil... det flimrer ikke....
indhold : 1 stk picturebox + en bunke shapes og nogle timere :
Option Explicit
Dim dx, dy, dx1, dy1, dx2, dy2, dx3, dy3, dx4, dy4 As Integer

Private Sub Form_Load()
Height = Screen.Height
Width = Screen.Width
Top = 0
Left = 0
end sub

Private Sub Timer1_Timer()
If Ball.Left + Ball.Width + dx >= Picture1.ScaleWidth Then
    dx = -dx
    End If
If Ball.Left <= 0 Then
    dx = -dx
    End If
If Ball.Top + Ball.Height + dy >= Picture1.ScaleHeight Then
    dy = -dy
    End If
If Ball.Top <= 0 Then
    dy = -dy
    End If
    If Ball.Left + Ball.Width = (scball.Left + scball.Width) Then
dx = -dx
End If

If Ball.Top + Ball.Height + dy = (scball.Top - scball.Height) Then
    dy = -dy
    End If
    Ball.Move (Ball.Left + dx), (Ball.Top + dy)


 

End Sub

Private Sub Timer2_Timer()
If scball.Left + scball.Width + dx1 >= Picture1.ScaleWidth Then
    dx1 = -dx1
    End If
If scball.Left <= 0 Then
    dx1 = -dx1
    End If
If scball.Top + scball.Height + dy1 >= Picture1.ScaleHeight Then
    dy1 = -dy1
    End If
If scball.Top <= 0 Then
    dy1 = -dy1
    End If
    scball.Move (scball.Left + dx1), (scball.Top + dy1)
    If (scball.Left + scball.Width) = (Ball.Left + Ball.Width) Then
dx1 = -dx1
End If
End Sub

Private Sub Timer3_Timer()
If ball1.Left + ball1.Width + dx2 >= Picture1.ScaleWidth Then
    dx2 = -dx2
    End If
If ball1.Left <= 0 Then
    dx2 = -dx2
    End If
If ball1.Top + ball1.Height + dy2 >= Picture1.ScaleHeight Then
    dy2 = -dy2
    End If
If ball1.Top <= 0 Then
    dy2 = -dy2
    End If
  ball1.Move (ball1.Left + dx2), (ball1.Top + dy2)
   

End Sub

Private Sub Timer4_Timer()
If ball2.Left + ball2.Width + dx3 >= Picture1.ScaleWidth Then
    dx3 = -dx3
    End If
If ball2.Left <= 0 Then
    dx3 = -dx3
    End If
If ball2.Top + ball2.Height + dy3 >= Picture1.ScaleHeight Then
    dy3 = -dy3
    End If
If ball2.Top <= 0 Then
    dy3 = -dy3
    End If
  ball2.Move (ball2.Left + dx3), (ball2.Top + dy3)
End Sub

Private Sub Timer5_Timer()
If ball3.Left + ball3.Width + dx4 >= Picture1.ScaleWidth Then
    dx4 = -dx4
    End If
If ball3.Left <= 0 Then
    dx4 = -dx4
    End If
If ball3.Top + ball3.Height + dy4 >= Picture1.ScaleHeight Then
    dy4 = -dy4
    End If
If ball3.Top <= 0 Then
    dy4 = -dy4
    End If
  ball3.Move (ball3.Left + dx4), (ball3.Top + dy4)
End Sub


Avatar billede johs_j Novice
07. august 2001 - 20:31 #8
Jeg kan ikke helt huske hvordan man flytter billedet, men prøv at flytte i mindre hak.
Avatar billede rasmuss Nybegynder
08. august 2001 - 09:50 #9
Jeg har 800 Hz - 128 Ram - Og kører i 1024 * 768 med Windows Me.

Og koden er ganske simpel:


Private Sub Timer1_timer8)

image1.left = image1.left + 10

End Sub

Det er ikke computeren der er for langsom! - Det er bare Visual Basic 6.0 der ikke kan lave animationer!!
Avatar billede rasmuss Nybegynder
08. august 2001 - 09:53 #10
PS.

Lige så glidende som F.eks C ,C++ kan klare.
Avatar billede terry Ekspert
08. august 2001 - 10:43 #11
Have you tried putting the movement in a loop

Dim i as Integer
for i = 1 to 1000
  image1.left = image1.left + 10
next i

It moves MUCH faster, but the flimmer is still there.


Avatar billede thommehawk Nybegynder
08. august 2001 - 19:21 #12
Thommehawk siger at du skal læse afsnittet om \"bitblt\" på msdn.
Avatar billede rasmuss Nybegynder
20. august 2001 - 12:51 #13
Jeg giver op!!, så må jeg jo lave nogle mindre grafiske spil!.
Avatar billede fracklen Nybegynder
22. april 2002 - 21:11 #14
Har VB ikke noget som i C, C++ og Delphi der hedder DoubleBuffer???
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester