/ Forside / Teknologi / Udvikling / VB/Basic / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
VB/Basic
#NavnPoint
berpox 2425
pete 1435
CADmageren 1251
gibson 1230
Phylock 887
gandalf 836
AntonV 790
strarup 750
Benjamin... 700
10  tom.kise 610
Flimmer [VB6]
Fra : Jens Vestergaard


Dato : 11-06-02 14:52

Er der en flimmer-fri måde at skifte mellem to billeder (bmp) i en
Image-control?

Jeg skal bruge en blink-effekt ved at skifte mellem to billeder - og nej,
jeg kan i dette tilfælde ikke bruge en animeret gif.

--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen




 
 
Steen Gellett (11-06-2002)
Kommentar
Fra : Steen Gellett


Dato : 11-06-02 16:47

Kan du ikke bruge Image.Refresh ??

Jens Vestergaard skriver:

> Er der en flimmer-fri måde at skifte mellem to billeder (bmp) i en
> Image-control?
>
> Jeg skal bruge en blink-effekt ved at skifte mellem to billeder - og nej,
> jeg kan i dette tilfælde ikke bruge en animeret gif.
>
> --
> mvh
> Jens Vestergaard
> www.railsoft.dk
> --------
> Indsæt v før snablen

--
Med venlig hilsen
Steen Gellett
Member of: DanishTeamRC5-64 Calculation - Team ID#:6635
Mailto:steen@gellett.net



Bjarke Walling Peter~ (11-06-2002)
Kommentar
Fra : Bjarke Walling Peter~


Dato : 11-06-02 18:34

Jens Vestergaard skrev:
> Er der en flimmer-fri måde at skifte mellem to billeder (bmp) i en
> Image-control?
[snip]

Jeg er ikke helt sikker på jeg forstår hvad problemet er, men måske virker
følgende: Lav to image-controls oven i hinanden med hvert sit billede og sæt
den øverste's visible til skiftevis false og true. Det kan du gøre sådan
her:
Image2.Visible = Not Image2.Visible

Mvh. Bjarke



Jens Vestergaard (12-06-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 12-06-02 14:10

"Bjarke Walling Petersen" <bwp@bwp.dk> skrev i en meddelelse
news:3d0634f0$0$71650$edfadb0f@dspool01.news.tele.dk...
> Jens Vestergaard skrev:
> > Er der en flimmer-fri måde at skifte mellem to billeder (bmp) i en
> > Image-control?
> [snip]
>
> Jeg er ikke helt sikker på jeg forstår hvad problemet er, men måske virker
> følgende: Lav to image-controls oven i hinanden med hvert sit billede og
sæt
> den øverste's visible til skiftevis false og true. Det kan du gøre sådan
> her:
> Image2.Visible = Not Image2.Visible

Ja, det kunne jeg godt, men lader sig praktisk ikke gøre i dette tilfælde,
da der er temmelig mange, og da der er mange billeder, der kan være
aktuelle.

Lad os sige, der er 10 images.
img1 skifter måske mellem A.bmp og Ax.bmp
img2 skifter måske mellem C.bmp og Cx.bmp
img3 skifter måske mellem B.bmp og Bx.bmp
osv.osv.

Jeg har lavet det i en timer-event, hvor koden ser nogenlunde sådan her ud.

Private Sub Timer1_Timer()
Static v As Boolean
Dim i As Image
For Each i In myImages
If v Then
i.Picture = LoadPicture(PresentPic & "x.bmp")
Else
i.Picture = LoadPicture(PresentPic & ".bmp")
End If
Next
v = Not v
End Sub

Uanset, om jeg bruger Refresh eller ej, giver det ind imellem en lille smule
flimmer i Image'rne.
Det er det, jeg gerne vil undgå.

--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen






Bjarke Walling Peter~ (12-06-2002)
Kommentar
Fra : Bjarke Walling Peter~


Dato : 12-06-02 17:15

Jens Vestergaard skrev:
> Ja, det kunne jeg godt, men lader sig praktisk ikke gøre i dette tilfælde,
> da der er temmelig mange, og da der er mange billeder, der kan være
> aktuelle.
>
> Lad os sige, der er 10 images.
> img1 skifter måske mellem A.bmp og Ax.bmp
> img2 skifter måske mellem C.bmp og Cx.bmp
> img3 skifter måske mellem B.bmp og Bx.bmp
> osv.osv.
>
> Jeg har lavet det i en timer-event, hvor koden ser nogenlunde sådan her
ud.
>
> Private Sub Timer1_Timer()
> Static v As Boolean
> Dim i As Image
> For Each i In myImages
> If v Then
> i.Picture = LoadPicture(PresentPic & "x.bmp")
> Else
> i.Picture = LoadPicture(PresentPic & ".bmp")
> End If
> Next
> v = Not v
> End Sub
>
> Uanset, om jeg bruger Refresh eller ej, giver det ind imellem en lille
smule
> flimmer i Image'rne.
> Det er det, jeg gerne vil undgå.

Jeg tror det er rimelig dumt at loade billederne fra en bestemt fil hver
eneste gang - det er muligvis derfor det flimrer.
Man har mulighed for at sætte en property Index til en værdi - f.eks. kan du
have to Images der begge hedder myImage, men med to forskellige
Index-værdier (f.eks. 0 og 1). De kan så kaldes ved at skrive myImage(0) og
myImage(1).
Det du gør er at du laver en usynlig (Visible = False) Image-control for
hvert billede du vil bruge (ud over dem, hvor du viser billederne i) - du
kalder dem alle sammen det samme, f.eks. myImage, men giver dem forskellige
Index-værdier fra 0 til ?? (det kommer an på hvor mange billeder der er).
Herefter kan du, når du vil vise et billede, skrive: i.Picture =
myImage(EtTal) ... hvor EtTal angiver Index-værdien på billedet. Så kan du
f.eks. lave et system med at billedet med "x" i altid har en index-værdi der
er én større end billedet uden. Så kan du, hvis PresentPic ellers var et tal
(det bliver det næsten nød til), skrive: myImage(PresentPic * 2 - v) ...
det vil virke da v ud over at være en Boolean også er et tal, som er -1 for
True og 0 for False. Når man så skriver 'minus v', vil der blive lagt 1 til
PresentPic * 2, hvilket vil vise billedet med 'x' i filnavnet.

Det sidste blev måske noget dårlig forklaret, men jeg håber du forstår
alligevel ... ellers må du jo bare spørge.
Ovenstående skulle virke, men om det fjerner flimmeret, tja ... jeg håber
det gør!

Mvh. Bjarke



Tomas Christiansen (12-06-2002)
Kommentar
Fra : Tomas Christiansen


Dato : 12-06-02 21:39

Jens Vestergaard skrev:
> > Image2.Visible = Not Image2.Visible
>
> Ja, det kunne jeg godt, men lader sig praktisk ikke gøre i dette
tilfælde,
> da der er temmelig mange, og da der er mange billeder, der kan være
> aktuelle.

Du kan da vel loade billedet ind i den Image-kontrol som IKKE er
synligt, for derefter at switche det til at blive synligt.
Næste billede skal så loades ind i den anden Image-kontrol, idet det
nu er den som ikke er synlig. Osv. osv. osv.

-------
Tomas


Jens Vestergaard (13-06-2002)
Kommentar
Fra : Jens Vestergaard


Dato : 13-06-02 07:11

"Tomas Christiansen" <toc@blikroer.removethis.dk> skrev i en meddelelse
news:ae8bh0$14e3$1@news.cybercity.dk...
> Jens Vestergaard skrev:
> > > Image2.Visible = Not Image2.Visible
> >
> > Ja, det kunne jeg godt, men lader sig praktisk ikke gøre i dette
> tilfælde,
> > da der er temmelig mange, og da der er mange billeder, der kan være
> > aktuelle.
>
> Du kan da vel loade billedet ind i den Image-kontrol som IKKE er
> synligt, for derefter at switche det til at blive synligt.
> Næste billede skal så loades ind i den anden Image-kontrol, idet det
> nu er den som ikke er synlig. Osv. osv. osv.

Det er korrekt, at det ikke giver flimmer, når man skifter et billede med et
andet, allerede loaded. Og løsningen er måske at have et antal
aldrig-synlige images, der indeholder de alternative billeder.

I det aktuelle tilfælde giver det en h.... masse ekstraarbejde, men det er
åbenbart prisen.

--
mvh
Jens Vestergaard
www.railsoft.dk
--------
Indsæt v før snablen



Søg
Reklame
Statistik
Spørgsmål : 177552
Tips : 31968
Nyheder : 719565
Indlæg : 6408847
Brugere : 218887

Månedens bedste
Årets bedste
Sidste års bedste