[VB6] Flikkeren van form reduceren

Pagina: 1
Acties:

  • coenbijlsma
  • Registratie: Augustus 2004
  • Niet online
Goedemiddag,

ik ben in vb6 een programmaatje aan het schrijven, waarvan het (enige) form een Picture als achtergrond heeft. Echter, als ik het programma start, flikkert het als een gek :'( .

Wat heb ik al geprobeerd?
- Ik heb de eigenschap AutoRedraw van het Form op false gezet
- Ik laad de Pictures in m.b.v LoadPicture, en in die tijd is het scherm niet visible (het start dan op)

Waar heb ik gezocht?
- Op Google, waardoor ik o.a. hier terecht kwam;
- Op GoT.

De enige hit (op Google) waar ik iets aan scheen te hebben is voor mij helemaal abracadabra.

Hoe kan ik dit probleem het beste oplossen?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Post eens wat (relevante) code dan? Want als jij een picture (eenmalig) laadt zie ik niet in waarom 't zou "flikkeren". Denk eraan dat je [code] tags gebruikt ;)

edit:
Dit werkt bij mij feilloos:
Visual Basic 6:
1
2
3
Private Sub Form_Load()
    Me.Picture = LoadPicture("C:\Pictures\somepicture.bmp")
End Sub


Heb je gekke dingen in je resize event staan ofzo misschien?

Eventueel: Welke SP gebruik je voor je VB6?

[ Voor 78% gewijzigd door RobIII op 06-06-2006 14:27 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • coenbijlsma
  • Registratie: Augustus 2004
  • Niet online
Op uw wensen bediend:

Visual Basic 6:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub Form_Initialize()
Call loadPictures
End sub

'En de code voor loadPictures ziet er zo uit:
Public Sub loadPictures()
    frmMain.Picture = LoadPicture(App.Path & "\images\achtergronden\achtergrond_home.gif")
    frmMain.imgUp.Picture = LoadPicture(App.Path & "\images\scroll\humen_omhoog.gif")
    frmMain.imgDown.Picture = LoadPicture(App.Path & "\images\scroll\humen_omlaag.gif")
    frmMain.imgNext.Picture = LoadPicture(App.Path & "\images\buttons\humen_volgende.gif")
    frmMain.imgPrev.Picture = LoadPicture(App.Path & "\images\buttons\humen_vorige.gif")
    frmMain.imgEnd.Picture = LoadPicture(App.Path & "\images\end.gif")
    frmMain.imgVoorgrond.Picture = LoadPicture(App.Path & "\images\achtergronden\achtergrond_1.gif")
    
End Sub


Ik heb er nog even naar gekeken, en ik die dit idd maar één keer (nl, tijdens Form_Initialize()).
Ik heb de resize() niet uitgebreid of overschreven, FYI ik gebruik SP6

edit:

Ik ben eigenlijk meer Java freak, dus misschien doe ik hier wel iets heel doms B)

[ Voor 11% gewijzigd door coenbijlsma op 06-06-2006 14:33 ]


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik zou zowieso de form_load event gebruiken en niet de form_initialize ;)

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • coenbijlsma
  • Registratie: Augustus 2004
  • Niet online
Ga ik vanavond even doen, m'n werk zit er even tussen nu ;)

  • coenbijlsma
  • Registratie: Augustus 2004
  • Niet online
Ik ben er inmiddels achter dat het flikkeren voor het overgrote deel aan m'n laptop ligt. Als ik 't programma op de pc run flikkert het bijna onzichtbaar.

Ik heb trouwens nu het form_load event gebruikt, maar dat maakt niet echt veel (zichtbaar) verchil.

Vooreerst ben ik wel tevreden met het behaalde resultaat, dus mag er van mij wel een slotje op :)

  • CyBoB
  • Registratie: Januari 2001
  • Laatst online: 24-12-2025

CyBoB

.::BURB::.

Dat het minder flikkert op je PC komt waarschijnlijk omdat deze een stuk sneller is dan je laptop. Dit is natuurlijk geen oplossing, want een gebruiker met een langzame pc heeft wel flikkers en misschien nog wel meer als die pc nog trager is dan je laptop.

Ik heb verder geen antwoord op je vraag, maar vergeet dus niet dat klanten vaak met een stuk oudere hardware werkt.

  • DexterDee
  • Registratie: November 2004
  • Laatst online: 16-02 21:20

DexterDee

I doubt, therefore I might be

Ik ben geen Visual Basic programmeur maar wel bedreven in Delphi. Ik heb soortgelijke symptomen ook gehad in een iets andere situatie. De oplossing was om het 'window' de property "double buffering" of "triple buffering" te geven. Geen idee hoe je dat in Visual Basic doet, maar het is wel een API property van een windows venster.

Klik hier om mij een DM te sturen • 3245 WP op ZW


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Je kunt tijdens het laden je visible property op false houden, je pictures laden en dan pas je visible property op true zetten... als dat nog niet werkt....

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Not Pingu
  • Registratie: November 2001
  • Laatst online: 30-01 15:48

Not Pingu

Dumbass ex machina

Je zou het volgende kunnen proberen in de constructor van je form:

code:
1
SetStyle(ControlStyles.OptimizedDoubleBuffer, true)


Winforms zijn van zichzelf traag met renderen. Iets als een image dat bij elke rendering op het beeld getekend moet worden, maakt dit erg duidelijk doordat de control eerder gerenderd wordt dan de image die eropstaat.

Door te spelen met de controlstyles zou je dit kunnen verhelpen.

Certified smart block developer op de agile darkchain stack. PM voor info.


  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Gunp01nt schreef op woensdag 07 juni 2006 @ 10:28:
Je zou het volgende kunnen proberen in de constructor van je form:

code:
1
SetStyle(ControlStyles.OptimizedDoubleBuffer, true)


Winforms zijn van zichzelf traag met renderen. Iets als een image dat bij elke rendering op het beeld getekend moet worden, maakt dit erg duidelijk doordat de control eerder gerenderd wordt dan de image die eropstaat.

Door te spelen met de controlstyles zou je dit kunnen verhelpen.
Er van uit gaande dat het hier over VB6 gaat (zie titel) gaat dat niet werken ;)
Je zult de API-manier moeten gebruiken, en dan zou ik eerder gaan voor de LockWindowUpdate.

Sample: http://www.allapi.net/apilist/LockWindowUpdate.shtml

[ Voor 4% gewijzigd door RobIII op 07-06-2006 10:51 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1