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 :

Dessiner sur un composant


Sujet :

Windows Forms

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut Dessiner sur un composant
    Bonjour a tous jai une petite question,

    j'aimerais savoir si c'est possible de dessiner sur une pictureBox ?
    et si oui comment ?

    Merci par avance

  2. #2
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    tu devrais lire le tutoriel sur la création de userControl

    Et par expérience, il est "très" mauvais de vouloir dessiner sur une pictureBox..; parce qu'on peut le faire, mais que ce n'est pas vraiment la meilleure solution...

    Surtout qu'une picture Box, se contente uniquement d'appeler les méthodes DrawImage de la classe Graphics() avec les paramètres qui conviennent suivant le choix du mode (stretch, etc...)

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    Hello Monz,

    J'ai lu le tutoriel mais je ne vois pas le rapport meme après ton intervention.
    Peut tu me dire en quoi ce n'est pas la bonne solution et donc quelle solution est la meilleure ?

    Merci

  4. #4
    Membre habitué Avatar de bobmidou
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2008
    Messages : 121
    Points : 149
    Points
    149
    Par défaut
    salut

    Voici un petit exemple qui dessine une line

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
        Graphics g = PictureBox.CreateGraphics();
        Pen pen = new Pen(Color.Red);
        g.DrawLine(pen,0,0,PictureBox.Width,PictureBox.Height); // tracer la 1 ère diagonale
    Bonne chance

  5. #5
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    voilà typiquement le genre d'exemple utile, mais qui ne sont vraiment qu'une façon "horrible" de faire les choses... Désolé Bobmidou, mais utiliser le CreateGraphics est quelque chose d'assez "vilain" si on veut faire une programmation vraiment joli...

    L'idéal pour faire ce que tu fais, est de faire un userControl, hérite de la picturebox si cela te convient, et de surcharger la méthode OnPaint().

    Une fois que tu auras fait le travail dans le OnPaint(), tout sera "parfait".

    Bien sur, un des arguments de OnPaint(), pe pour ne pas le citer, te fourni
    l'accès au graphics de ta pictureBox (donc, n'utilise surtout pas dans le OnPaint() un createGraphics()).

    Ensuite, tu peux dessiner ton image (ou bien faire le base.OnPAint()) puis ensuite, faire le draw sur le pe.Graphics fourni en argument !!!

    Sans vouloir donner de leçon de programmation .Net, C'est LA solution pour faire quelque chose de propre et sans avoir à se poser ensuite la question du rafraichissement (faut-il un timer pour rafraichir, etc..)... La, le OnPaint()
    est appelé à chaque fois que necessaire, voir à la suite d'un Invalidate()
    (que tu peux appeler par exemple dans une propriété qui aurait une incidence sur le dessin à afficher)

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    Merci Monz je vais regarder ca meme si ca me parait complexe.

  7. #7
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    je te promets que faire du Draw n'a rien de complexe du tout

    C'est très simple et les fonctionnalités fournis pour le dessin et autre du framework sont vraiment puissantes et dans la plupart des cas suffisantes

    Si tu as des soucis, tu exposes clairement ton problème et on (je) t'orienteras vers une solution possible !!!

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    Bon bah rebonjour,

    J'ai un petit probleme,
    voila jeveux dessiner sur une pictuebox , dans le constructeur de la windows form ou lors d'un clic sur un bouton ...

    je fais donc pic.creategraphics ....
    etc ...

    mais ca ne marche pas rien n'est dessiné j'aimerais une petite explication pr resoudre mon probleme?

    merki

  9. #9
    Expert confirmé

    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2006
    Messages
    3 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Septembre 2006
    Messages : 3 580
    Points : 5 194
    Points
    5 194
    Par défaut
    je t'ai déja répondu...

    Tu dessines dans le OnPaint() et nul par ailleurs

    Si tu n'écoutes pas mes conseils, je m'en dispenserais à l'avenir !

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    371
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 371
    Points : 65
    Points
    65
    Par défaut
    jai essayé paint mais pareil ... rien n'est dessiné ... frustrant

    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
            private void pictureBox_imagetest_Paint(object sender, PaintEventArgs e)
            {
                Graphics g = e.Graphics;
     
                g.SmoothingMode = SmoothingMode.AntiAlias;
     
                Pen pen = new Pen(fPenColor, 5);
     
                Point pt_temp = new Point((X_CoinHautGauche + (Largeur / 2)),(Y_CoinHautGauche + (Longueur / 2)) );
     
                //Point pt_temp = new Point(100, 100);
     
                Rectangle rect = new Rectangle(pt_temp.X - 5, pt_temp.Y - 5, 10, 10);
     
                g.DrawRectangle(pen, rect);
     
                OldPos = pt_temp;
            }
        }        }
    Pourtant il me semble avoir fait comme il faut ....

Discussions similaires

  1. [SWING]Dessiner sur un composant
    Par Tarteens dans le forum AWT/Swing
    Réponses: 22
    Dernier message: 02/07/2007, 11h50
  2. Dessiner sur un composant sans Canvas
    Par josse95 dans le forum C++Builder
    Réponses: 10
    Dernier message: 31/03/2007, 20h01
  3. Dessiner sur un composant sans Canvas
    Par bandit boy dans le forum C++Builder
    Réponses: 6
    Dernier message: 08/02/2007, 14h12
  4. dessiner sur un composant picturebox
    Par xantares dans le forum VC++ .NET
    Réponses: 4
    Dernier message: 03/01/2007, 13h05
  5. [Delphi 6] dessiner sur composant QuickRep
    Par KrusK dans le forum Composants VCL
    Réponses: 2
    Dernier message: 18/06/2005, 01h48

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