bonjour,
je viens de poster un post équivalent dans la rubrique VB.NEt, mais je me permet de re poster ici, au cas où une solution aurais été trouvée par un codeur C#, qui ne se promènerai pas sur le forum VB.NET (je connais aussi le C#, je pourrais faire une transposition de code si nécéssaire)
voici le post que j'ai posé dans VB.NET / Windows Form :
(et merci pour toute aide, ou info)
bonjour,
je développe en VB.NET, framework 2, sur une application winForm.
l'application sur laquelle je travaille en ce moment est assez graphique :
j'ai des boutons contenant des images, transparentes pour cetaines (boutons ronds), j'ai parfois une form avec un fond d'écran.
mon application est MDI, avec chaque form dans la MDI qui s'ouvre seule (donc les autres form sont fermées)
voilà pour poser le décors
j'ai un gros soucis, comme pas mal de gens semble t-il, de performances graphiques, essentiellement à l'ouverture d'e chaque form, lors du 1er affichage de la form.
j'ai souvent des clignotements vilains, parfois des bout du bureau qui s'affiche dans ma forme, pendant un bref moment,
j'ai même une form définie sans bords, sans barre de menu, sans icone, qui s'affiche pendant 1/10 de secondes dans un format standard (fene^tre, croix pour fermer, bords de fenetre...) puis ma Form se met à jour, et s'affiche correctement.
j'ai testé toutes les solutions simples :
-mettre peu de codedans la méthode Load(), surtout peu de chargement venant du disque dur.
-diminuer autant que possible les images transparentes
-essayer de préparer le maximum de composants, chargement etc... avant la Load()
rien n'y fait.
j'ai suivi ce post, avec attention :
http://www.developpez.net/forums/sho...=double+buffer
il y a des idées interressantes, mais aps assez d'info pouvant m'aider :
je recherche une méthode pour pouvoir écrire un composant utilisateur (usercontrol) ou un composant personnalisé (customcontrol), qui pourrait déssiner tout seul dans un backbuffer, envoyer un flag, un évènement, ou un ??? pour dire j'ai fini d'écrire, pour que la form appelante crée de manière classique puisse dire au final : c'a y est, tout mes composants ont été déssinés, je peux envoyer mon backbuffer dans mon écran, donc dans ma form.
j'ai déjà écrit des UserControl. je ne voit pas comment faire avec ce type de composants, pour écrire mes boutons, images, texte dans un backbuffer.
je n'ai jamais fait de CustomControl. est ce là la solution ?
je ne vois pas vriament comment gérer un backbuffer personnel dans ma form.
malgré le post cité ci dessus, que j'ai lu avbec attention, je n'arrive pas à comprendre la méthode.
si quelqu'un à de sidées, des bouts de code, des infos sur le procédé, cela m'iderai.
merci
cordialement,
Olivier
Partager