Quadrillage de points [Résolu]

Signaler
Messages postés
191
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
30 juin 2011
-
Messages postés
191
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
30 juin 2011
-
Bonjour,

Je m'initie aux fonction graphiques de C# et j'aurais souhaité comprendre comment réaliser un quadrillage à partir d'un tableau de points:

Je défini une taille de carré, ex: 10, j'obtiens donc un tableau de 100 points.
Ensuite je cherche à afficher un carré quadrillé.

J'ai réalisé ceci, mais cela n'affiche pas le résultat attendu:

private void trace_map()
        {
            int index = 0;
            int x = 10;
            int y = 10;

            GraphicsPath gp = new GraphicsPath();
            Point[] values = new Point[vars.mapsize * vars.mapsize];

            for (int i = 0; i < vars.mapsize; i++)
            {
                for (int j = 0; j < vars.mapsize; j++)
                {
                    values[index].X = x * 10;
                    values[index].Y = y * 10;
                    y = y + 1;
                    index = index + 1;
                }
                x = x + 1;
                y = 10;
            }

            gp.AddLines(values);
            Graphics g = graph.CreateGraphics();
            g.DrawPath(Pens.Black, gp);
            nb_pts.Text = index.ToString() + " points";
        }

J'ai effectivement un carré mais pas de quadrillage, plutôt des "dents".
Pourriez-vous me donner de plus ample explications ?

Cordialement,
Anz
A voir également:

5 réponses

Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
51
Salut,
Le plus simple c'est d'utiliser DrawLine probablement, en faisant varier une fois les x (pour les trais verticaux) et une fois les y (pour les horizontaux).

<hr />
-My Blog-
Messages postés
191
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
30 juin 2011

Le revoilà..
J'ai essayé avec la méthode suivante
Représentons nous une carré de 5x5  points comme ceci:

                         .    .    .    .    .
                         .    .    .    .    .
                         .    .    .    .    .
                         .    .    .    .    .
                         .    .    .    .    .

J'ai essayer de creer des polygones entre quatres points de la manière suivante:

for (int i = 0; i < (vars.mapsize - 1) * (vars.mapsize - 1); i++)
            {
                gp.AddPolygon(new Point[]{values[i],values[i+1],values[i + vars.mapsize], values[i + vars.mapsize + 1]});
               
            }

Je n'obtiens toujours pas le quadrillage mais quelque chose qui s'en rapproche..
N'auriez vous même pas une toute petite idée ?

Merci par avance !

Anz
Messages postés
191
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
30 juin 2011

Edit:

pour comprendre les index des points:

                       4.     9 .
                       3 .    8 .
                       2 .    7 .
                       1 .    6 .
                       0 .    5 .   etc...
Messages postés
3246
Date d'inscription
lundi 25 avril 2005
Statut
Modérateur
Dernière intervention
27 octobre 2012
36
Salut.. je suis bien d'accord avec Bidou, ce sera plus simple avec DrawLine(s ) ou DrawRectangle(s) :

protected override void OnPaint( PaintEventArgs args )
{
    //base.OnPaint( args );


    Graphics g = args.Graphics;


    for ( int x = 10; x < 250; x += 50 )
    {
        for ( int y = 10; y < 250; y += 50 )
        {
            g.DrawRectangle( Pens.Black, x, y, 50, 50 );
            System.Threading.Thread.Sleep( 250 ); // pour l'exemple.
        }
    }
}
Messages postés
191
Date d'inscription
mercredi 11 juillet 2007
Statut
Membre
Dernière intervention
30 juin 2011

Merci à vous, j'y suis finalement parvenu, grace à la méthode DrawPolygon.

Cordialement,

Anz.