IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

ecrire des controle (bouton, images, texte) dans un backbuffer.


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 42
    Par défaut ecrire des controle (bouton, images, texte) dans un backbuffer.
    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

  2. #2
    AP
    AP est déconnecté
    Membre chevronné
    Avatar de AP
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    480
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2002
    Messages : 480
    Par défaut
    Hello,

    C'est un problème réccurent en Windows forms, quand on a des formulaires un peu chargé, les performances s'écroulent. Malheureusement ce n'est pas qu'un problème de dessin (même s'il y contrinue énormément).
    J'ai un projet dont certaines forms contiennent un peu plus d'une centaine de control et il y a toujours la sensation de lourdeur.
    J'ai cherché pendant longtemps comment optimiser tout cela. Il y a plusieurs solutions:
    - jouer avec iSupportInitialize pour n'avoir qu'une mise à jour finale
    - passer certain controls en doublebuffer (ca évite le scintillement mais ca n'accélérera pas beacoup ton application)
    - réécrire certains controls. En la plupart des controls winform sont assez génériques et en redévelopper certains ne faisant que ce dont on a besoin permet bien souvent d'avoir des performances supérieures.
    - Minimiser le nombre de control au strict minimum: C'est l'approche utilisée par exemple pour les toolstrips qui sont assez performants. C'est l'approche que je suis en train de suivre pour mettre au point un ensemble complet de composants. Seulement c'est qqlch de lourd à réaliser avant d'avoir des widgets performants. SI tu veux plus d'infos, regarde ma signature.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 42
    Par défaut
    bonjour,

    merci pour la réponse.
    j'ai regardé votre site avec attention.
    j'ai trainé sur le net aussi, afin de chercher des solutions existantes, au cas où...

    il va me falloir écrire mes composants, cela sera long mais ce n'est pas très grave.
    ce qui m'ennuie, c'est que aucun tutorial n'existe, aidant à comprendre le cheminement pour créer un composant Custom control, et surtout, comment gérer soit même l'affichage, un backbuffer, etc...

    bon, je continu à chercher.

    merci
    Olivier

Discussions similaires

  1. Réponses: 1
    Dernier message: 09/06/2014, 22h31
  2. [C#] DataGridView image + texte dans une cellule
    Par nitrous007 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 28/06/2007, 13h08
  3. Réponses: 1
    Dernier message: 19/01/2006, 19h22
  4. Envoyer des controles d'un formulaire dans un tableau
    Par CB56 dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 18/11/2005, 10h43
  5. Réponses: 5
    Dernier message: 15/05/2005, 08h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo