Quadrillage de points

Résolu
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011 - 21 oct. 2008 à 11:49
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011 - 22 oct. 2008 à 22:35
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

5 réponses

cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 60
22 oct. 2008 à 09:47
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-
3
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
21 oct. 2008 à 16:17
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
0
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
21 oct. 2008 à 16:19
Edit:

pour comprendre les index des points:

                       4.     9 .
                       3 .    8 .
                       2 .    7 .
                       1 .    6 .
                       0 .    5 .   etc...
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 41
22 oct. 2008 à 10:50
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.
        }
    }
}
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ansizak Messages postés 191 Date d'inscription mercredi 11 juillet 2007 Statut Membre Dernière intervention 30 juin 2011
22 oct. 2008 à 22:35
Merci à vous, j'y suis finalement parvenu, grace à la méthode DrawPolygon.

Cordialement,

Anz.
0