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

C# Discussion :

[C#] [GDI+] Bug affichage


Sujet :

C#

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 111
    Points : 65
    Points
    65
    Par défaut [C#] [GDI+] Bug affichage
    Bonjour !

    Je dispose d'elements GDI+ dessinés dans une pictureBox, ainsi qu'un menu au dessus de celle-ci. Le problème est le suivant : lorsque je clique sur un menu, la partie déroulante du menu efface sur cette zone le graphique, laissant un grand rectangle blanc sur mon graphique, même lorsque le menu est fermé...

    Quelqu'un sait comment je pourrais faire pour corriger ce bug ? Merci beaucoup

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 43
    Points : 37
    Points
    37
    Par défaut
    il n'y a pas de redraw() ou refresh() sur la picturebox que tu pourrais appeler lors de l'evenement OnHide (ou equivalent) du menu ?

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 111
    Points : 65
    Points
    65
    Par défaut
    En fait après test, j'ai remarqué que le problème n'est pas seulement lié au menu. En déplaçant une fenêtre sur la pictureBox, elle efface au fur et à mesure mes élements GDI+, et lorsque je minimise puis maximise ma fenêtre, là tout est effacé

    Quelqu'un aurait une soluce, afin que mes dessins restent permanents ?

    Merci d'avance

  4. #4
    Membre expert

    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    1 737
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 737
    Points : 3 137
    Points
    3 137
    Par défaut
    a quel moment est-ce que tu dessine tes éléments ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 111
    Points : 65
    Points
    65
    Par défaut
    Bonjour !

    En fait je dessine mes éléments à chaque clic de souris, mais lors d'un déplacement de fenêtre sur un élement graphique, ça l'efface au fur et à mesure, un peu comme si c'était une gomme... Et un minimize efface tout

    Y a-t-il une solution pour rendre les élements GDI+ permanents, ou alors est-ce normal et je dois tout redessiner à chaque fois ? (ce qui ne serait pas très pratique)

    Merci d'avance !

  6. #6
    Membre expert

    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2003
    Messages
    1 737
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 1 737
    Points : 3 137
    Points
    3 137
    Par défaut
    tu peux utiliser OnPaint. chaque fois que ton contrôle doit etre redessiné.

    sinon, tu peux générer tes dessins vers une image et la définir comme image de fond aussi, tout dépend de ce que tu veux faire

  7. #7
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    A mon avis, tu dessines sur le Graphics du controle PictureBox.
    Si tu dessinais sur le Graphics du Bitmap contenu dans la propriété Image du PictureBox, là ca ne s'effacerait pas.

    l'autre technique consiste effectivement à dessiner dans le OnPaint, ce qui signifie que tout se redessinera à chaque fois que tu afficheras quelque chose par dessus le controle.

    Si ton dessin prend du temps, autant opter pour la première solution.

    Dans tous les cas, il n'y a pas de bug, c'est un comportement normal lié au rafraichissement des contrôles qu'il faut savoir gérer en programmation IHM.

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2005
    Messages
    111
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Octobre 2005
    Messages : 111
    Points : 65
    Points
    65
    Par défaut
    Ok j'ai trouvé

    En fait il faut dessiner dans la méthode paint du controle, sinon les dessins GDI+ ne sont pas permanents... Je me suis arrangé avec un tableau et la méthode invalidate() pour m'en sortir

    Merci pour les pistes !

  9. #9
    Membre actif
    Homme Profil pro
    Création de jeux video (en amateur)
    Inscrit en
    Mars 2003
    Messages
    408
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Cantal (Auvergne)

    Informations professionnelles :
    Activité : Création de jeux video (en amateur)
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2003
    Messages : 408
    Points : 260
    Points
    260
    Par défaut
    Citation Envoyé par Tips
    En fait il faut dessiner dans la méthode paint du controle
    ... ou dans le Bitmap lorsqu'il s'agit d'un PictureBox.

    Si si j'y tiens, c'est beaucoup plus simple, et ca marche très très bien.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Apache2] Bug Affichage/Chargement incomplet...
    Par Atomicfryer dans le forum Apache
    Réponses: 3
    Dernier message: 27/09/2009, 12h24
  2. [TScrollBox] Bug affichage
    Par Pedro dans le forum Composants VCL
    Réponses: 10
    Dernier message: 14/09/2005, 11h48

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