Quadrillage de points [Résolu]

cs_ansizak 191 Messages postés mercredi 11 juillet 2007Date d'inscription 30 juin 2011 Dernière intervention - 21 oct. 2008 à 11:49 - Dernière réponse : cs_ansizak 191 Messages postés mercredi 11 juillet 2007Date d'inscription 30 juin 2011 Dernière intervention
- 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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_Bidou 5507 Messages postés dimanche 4 août 2002Date d'inscription 20 juin 2013 Dernière intervention - 22 oct. 2008 à 09:47
3
Merci
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-

Merci cs_Bidou 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 96 internautes ce mois-ci

Commenter la réponse de cs_Bidou
cs_ansizak 191 Messages postés mercredi 11 juillet 2007Date d'inscription 30 juin 2011 Dernière intervention - 21 oct. 2008 à 16:17
0
Merci
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
Commenter la réponse de cs_ansizak
cs_ansizak 191 Messages postés mercredi 11 juillet 2007Date d'inscription 30 juin 2011 Dernière intervention - 21 oct. 2008 à 16:19
0
Merci
Edit:

pour comprendre les index des points:

                       4.     9 .
                       3 .    8 .
                       2 .    7 .
                       1 .    6 .
                       0 .    5 .   etc...
Commenter la réponse de cs_ansizak
Lutinore 3248 Messages postés lundi 25 avril 2005Date d'inscription 27 octobre 2012 Dernière intervention - 22 oct. 2008 à 10:50
0
Merci
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.
        }
    }
}
Commenter la réponse de Lutinore
cs_ansizak 191 Messages postés mercredi 11 juillet 2007Date d'inscription 30 juin 2011 Dernière intervention - 22 oct. 2008 à 22:35
0
Merci
Merci à vous, j'y suis finalement parvenu, grace à la méthode DrawPolygon.

Cordialement,

Anz.
Commenter la réponse de cs_ansizak

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.