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 :

C# dessiner Rectangle (drawRectangle)


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Par défaut C# dessiner Rectangle (drawRectangle)
    Bonjour, je souhaite dessiner un rectangle a l'aide de 2 points.
    Voici mon code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Rectangle rect = new Rectangle((Point)points[index], (Size)Size);
     
    rect.Size = new Size(((Point)xpoints[index + 1] - (Point)xpoints[index]), 
    ((Point)ypoints[index + 1] - (Point)ypoints[index]));
     
    graphicsObject.DrawRectangle(pen, rect);
    J'ai une erreur

    Error 1 Operator '-' cannot be applied to operands of type 'System.Drawing.Point' and 'System.Drawing.Point' D:\Documents and Settings\Jérôme\Bureau\Test TekenProgramma\TekenProgramma\TekenProgramma\Form1.cs 113 43 TekenProgramma
    Une astuce?

  2. #2
    Membre expérimenté Avatar de Gulix
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Par défaut
    Que sont tes tableaux xpoints et ypoints ? Je ne comprends pas trop leur utilité, vu que tu sembles disposer d'un tableau points.

    Voici comment je coderai ça, en supposant que tu veuilles afficher le rectangle avec les points i et i+1, et que points soit un tableau de type Points[] :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Rectangle rect = new Rectangle(points[i], 
                                   new Size(points[i+1].X-points[i].X,
                                            points[i+1].Y-points[i].Y));
     
    graphicsObject.DrawRectangle(pen, rect);
    J'espère que ça t'aidera
    "L'univers... on croit qu'il est infini mais quand on arrive au bout un gorille géant vous balance des tonneaux."
    Phillip J. Fry

    http://www.gulix.fr/

    BlindShark, Logiciel de Blind Test - Pull N' Bounce - Jeu XNA

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Par défaut
    merci, j'y suis presque
    il me met juste un erreur

    Error 1 'object' does not contain a definition for 'X' et pareil pour 'Y'

    Je pense que ça a un rapport avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
            // lijst van coördinaten
            private ArrayList points = new ArrayList();
            private void drawPanel_MouseDown(object sender, MouseEventArgs e)
            {
                points.Add(new Point(e.X, e.Y));
                // ververs drawPanel
                drawPanel.Invalidate();
            } // einde method drawPanel_MouseDown
    ?

  4. #4
    Membre expérimenté Avatar de Gulix
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Par défaut
    Ouais, je ne savais pas quel était le type de l'objet points. C'est donc un ArrayList... Je peux te conseiller de passer aux génériques :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    // Avec les autres using
    using System.Collections.Generics;
    // Fin des using
     
    private List<Points> points = new List<points>();
    private void drawPanel_MouseDown(object sender, MouseEventArgs e)
    {
        points.Add(new Point(e.X, e.Y));
        // ververs drawPanel
        drawPanel.Invalidate();
    } // einde method drawPanel_MouseDown
    Et là ça va commencer à marcher, puisque ta liste hébergera clairement des objets de type Point. Si tu veux conserver ton ArrayList, il va falloir préciser le type des objets présents dans l'ArrayList à chaque fois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Point p1 = (Point) points[i];
    Point p2 = (Point) points[i+1];
     
    Rectangle rect = new Rectangle(p1, 
                                   new Size(p2.X-p1.X,
                                            p2.Y-p1.Y));
     
    graphicsObject.DrawRectangle(pen, rect);
    "L'univers... on croit qu'il est infini mais quand on arrive au bout un gorille géant vous balance des tonneaux."
    Phillip J. Fry

    http://www.gulix.fr/

    BlindShark, Logiciel de Blind Test - Pull N' Bounce - Jeu XNA

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2007
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2007
    Messages : 10
    Par défaut
    Merci! Ca marche! :-)

    J'ai un dernier soucis c'est que quand je change de forme (je passe d'une ligne a un rectangle) les lignes changent en rectangles....

    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
            private void drawPanel_Paint(object sender, PaintEventArgs e)
            {
            if (points.Count > 1)
            {
                for (int index = 0; index < points.Count - 1; index++)
                {
                    Graphics graphicsObject = drawPanel.CreateGraphics();
     
                    if (lijnToolStripMenuItem.Checked)
                    {
                        graphicsObject.DrawLine(pen, (Point)points[index], (Point)points[index + 1]);
                        graphicsObject.Dispose();
                        index++;
                    }
                    if (rechthoekToolStripMenuItem.Checked)
                    {
                        Point p1 = (Point)points[index];
                        Point p2 = (Point)points[index + 1];
                        Rectangle rect = new Rectangle((Point)points[index],
                        new Size(p2.X - p1.X, p2.Y - p1.Y));
                        graphicsObject.DrawRectangle(pen, rect);
                        graphicsObject.Dispose();
                        index++;
                    }
                    if (ellipsToolStripMenuItem.Checked)
                    {
                        Point p1 = (Point)points[index];
                        Point p2 = (Point)points[index + 1];
                        Rectangle ellips = new Rectangle((Point)points[index],
                        new Size(p2.X - p1.X, p2.Y - p1.Y));
                        graphicsObject.DrawEllipse(pen, ellips);
                        graphicsObject.Dispose();
                        index++;
                    }
                }

Discussions similaires

  1. [XL-2003] Dupliquer un bouton macro (dessin rectangle)
    Par Un Internaute dans le forum Macros et VBA Excel
    Réponses: 14
    Dernier message: 20/09/2014, 13h54
  2. Dessiner rectangles et pouvoir les déplacer
    Par jlm57 dans le forum VB.NET
    Réponses: 10
    Dernier message: 23/09/2011, 11h17
  3. [XL-2003] Outil de dessin "Rectangle" dans un USF
    Par Sécateur dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 24/02/2011, 18h25
  4. Dessiner rectangle de selection inversé.
    Par quentinthib dans le forum OpenGL
    Réponses: 2
    Dernier message: 27/08/2007, 00h44

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