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 :

Evènement PAINT d'un contrôle


Sujet :

Windows Forms

  1. #1
    Membre régulier Avatar de riadh_ado
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2006
    Messages : 90
    Points : 92
    Points
    92
    Par défaut Evènement PAINT d'un contrôle
    Bonsoir;
    J'ai un problème au niveau de message "Paint" d'un contrôle (Label); quand j'ouvre un menu le dessin qui se trouve dans le label s'efface. j' ai essayé de sauvegarder un état de graphique a l'aide de la commande Graphique.Save() et le restaurer mais pas de résultat. avez vous s'il vous plaît une idée pour ressouder ce problème.
    Voilà des images qui explique mieux ma situation
    État 1 :



    État 2 :



    État 3 :





    Cordialement

  2. #2
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    quand j'ouvre un menu le dessin qui se trouve dans le label s'efface
    C'est vraiment dans un label que tu veux dessiner ?
    Pas dans un pannel ?

    Dans tout les cas il faut que sur l'event Paint tu redessine l'image
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Il ne faut pas dessiner le menu dans la PictureBox contenant le dessin.

    Si les composants standard des menus ne te conviennnent pas, utilises une deuxième PictureBox (par dessus la première) pour dessiner le menu et joue sur la propriété Visible de cette PictureBox.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  4. #4
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Citation Envoyé par Grafitto
    Si les composants standard des menus ne te conviennnent pas, utilises une deuxième PictureBox (par dessus la première) pour dessiner le menu et joue sur la propriété Visible de cette PictureBox.
    Hola !
    On s'égare je pense

    Certainement pas besoin d'un deuxieme picturebox dans ce que je vois
    Il faut simplement bien gerer celui qui existe (s'il s'agit bien d'un picturebox)

    N.B. : J'avais mal interprete la notion de Label de riadh_ado je pensais qu'il parlait d'un Label sur lequel il dessinait mais si j'ai bien compris maintenant il parle de l'affichage du menu qui vient effacer son dessin

    Mais ca ne change rien a la solution : il faut correctement gerer l'affichage de la surface de dessin
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  5. #5
    Membre régulier Avatar de riadh_ado
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2006
    Messages : 90
    Points : 92
    Points
    92
    Par défaut
    Merci pour vous
    pour Mr olibara: oui je veux dessiner dans un label; est ce que je dois utiliser une picturebox?
    pour Mr Graffito : je ne dessine pas les menus; mais comme mr olibara a expliqué

    si j'ai bien compris maintenant il parle de l'affichage du menu qui vient effacer son dessin
    voilà le code pour que je vous mis en situation :

    la classe DrawingOption s'intéresse a dessiner les objets dans _mygraphique

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    class DrawIngOption
        {
            Graphics _MyGraphics;        
            SmoothingMode _mode;      
            PenClass _mypen;
            PenClass _eraser;
            public DrawIngOption(Graphics e)
            {
                _mode = SmoothingMode.Default;
                _MyGraphics = e;
                _MyGraphics.SmoothingMode = _mode;
                _mypen = new PenClass();
                _eraser = new PenClass(Color.White, 1, DashStyle.Solid, PenAlignment.Center);           
     
            }
            public void DrawPenErase(PenClass _pen,Point Start,Point End)
            {
                _MyGraphics.DrawLine(_pen.PenSelected, Start, End);
     
            }
            public SmoothingMode Mode
            {
                get { return _mode; }
                set 
                {   _mode = value;
                    _MyGraphics.SmoothingMode = _mode;
                }
            }
     
            public PenClass MyPen
            {
                get { return _mypen; }
                set { _mypen = value; }
            }
            public PenClass Eraser
            {
                get { return _eraser; }
                set { _eraser = value; }
            }
            public Graphics MyGraphics
            {
                get { return _MyGraphics; }
                set { _MyGraphics = value; }
            }       
        }
    Code de Formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public partial class PaintForm : Form
        {
            DrawIngOption DrawZone;
     
            bool _penSelected, _startPaint, _eraseSelected;
     
            bool _mouseClicked = false;
     
           ....................
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
     
     
    private void lblZone_MouseMove(object sender, MouseEventArgs e)
            {         
                .................................
                penDraw(e);         
                EraseDraw(e);                
            }
     
            private void penDraw(MouseEventArgs e)
            {
                if (_penSelected && _startPaint)
                {
                    _EndPoisiton = new Point(e.X, e.Y); 
                    DrawZone.DrawPenErase(DrawZone.MyPen,_startPosition, _EndPoisiton);
                    _startPosition = _EndPoisiton;      
                }
     
            }
            private void EraseDraw(MouseEventArgs e)
            {
                if (_eraseSelected)
                { 
                    _EndPoisiton = new Point(e.X, e.Y);
                    DrawZone.DrawPenErase(DrawZone.Eraser,_startPosition, _EndPoisiton);
                    _startPosition = _EndPoisiton;                   
                }
            }
    l'evenement Paint de label (je sais pas qu'est ce que dois écrire au juste )

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    private void lblZone_Paint(object sender, PaintEventArgs e)
            {
                if (DrawZone.MyGraphics != null)
                {
     
                }
            }
    Cordialement.

  6. #6
    Membre émérite
    Profil pro
    Mangeur de gauffre
    Inscrit en
    Octobre 2007
    Messages
    4 413
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Mangeur de gauffre

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 413
    Points : 2 498
    Points
    2 498
    Par défaut
    Bonjour

    Non tu ne dois pas forcément utiliser un PictureBox

    Mais pour gerer ton affichage je vois deux solution

    1- Soit tu retiens toutes les action (y compris la liste des point de la souris) afin de pouvoir re-executer toutes les commandes de dessin sur l'event paint.
    Mais dans le cas présent ca ne semble pas tres pertinent

    2- Soit tu dessine sur une image qui a les dimensions de ton Label (ou pannel) (donc ton graphics est créé a partir de cette image) et tu utilise cette image comme Image de ton Label
    A chaque Paint tu réassigne cette image a ton Label
    « Ils ne savaient pas que c'était impossible, alors ils l'ont fait ». (Twain)

  7. #7
    Membre régulier Avatar de riadh_ado
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    90
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations forums :
    Inscription : Avril 2006
    Messages : 90
    Points : 92
    Points
    92
    Par défaut
    Merci bien M. olibara je veux utiliser la deuxième et je vous mis en courant si c'est bien passé
    Merci encore.

Discussions similaires

  1. Evénement "click" sur contrôle ImageButton
    Par Nixar dans le forum ASP.NET
    Réponses: 3
    Dernier message: 04/12/2007, 23h50
  2. Contrôle Onglet et Evénement Click
    Par vandrie dans le forum IHM
    Réponses: 2
    Dernier message: 21/10/2007, 12h06
  3. [C#] Interdire le Paint d'un contrôle
    Par hobotalker dans le forum Windows Forms
    Réponses: 4
    Dernier message: 27/02/2007, 20h22
  4. [WebForms]Evénements agissant sur des contrôles
    Par dj_lil dans le forum Général Dotnet
    Réponses: 2
    Dernier message: 14/06/2006, 18h47
  5. Evènements Clic et Double Clic dans un contrôle
    Par jeportal dans le forum Access
    Réponses: 16
    Dernier message: 10/01/2006, 12h37

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