Problème Resize dans une winforms quatre composent. [Résolu/Fermé]

Signaler
-
 aurelien -
Salutation. J'essaye de créer un petit logiciel pour créer des models 3D en json pour minecraft en c# j'utilise xna pour le rendu 3D.

Mon problème ne viens pas xna mes de winforms, les quatre composent s'interposent. Je comprends un tout petit peu Anchor. mais comme il n'y pas collision entre eux au centre de mon winform il s'interpose voilà le code.

this.ClientSize = new System.Drawing.Size(404, 424);

            //global
            this.moteur3D_vue_Global = new Editeur_3D_minecraft.Moteur3D();
            this.moteur3D_vue_Global.Location = new System.Drawing.Point(0, 20);
            this.moteur3D_vue_Global.Name = "moteur3D";
            this.moteur3D_vue_Global.Size = new System.Drawing.Size(200, 200);
            this.moteur3D_vue_Global.TabIndex = 0;
            this.moteur3D_vue_Global.Text = "moteur3D";
            this.moteur3D_vue_Global.Anchor = (AnchorStyles.Top | AnchorStyles.Left);
            this.Controls.Add(this.moteur3D_vue_Global);

            //haut
            this.moteur3D_vue_haut = new Editeur_3D_minecraft.Moteur3D();
            this.moteur3D_vue_haut.Location = new System.Drawing.Point(204, 20);
            this.moteur3D_vue_haut.Name = "moteur3D";
            this.moteur3D_vue_haut.Size = new System.Drawing.Size(200, 200);
            this.moteur3D_vue_haut.TabIndex = 0;
            this.moteur3D_vue_haut.Text = "moteur3D";
            this.moteur3D_vue_haut.Anchor = (AnchorStyles.Top | AnchorStyles.Right);
            this.Controls.Add(this.moteur3D_vue_haut);

            //face
            this.moteur3D_vue_face = new Editeur_3D_minecraft.Moteur3D();
            this.moteur3D_vue_face.Location = new System.Drawing.Point(0, 224);
            this.moteur3D_vue_face.Name = "moteur3D";
            this.moteur3D_vue_face.Size = new System.Drawing.Size(200, 200);
            this.moteur3D_vue_face.TabIndex = 0;
            this.moteur3D_vue_face.Text = "moteur3D";
            this.moteur3D_vue_haut.Anchor = (AnchorStyles.Bottom | AnchorStyles.Left);
            this.Controls.Add(this.moteur3D_vue_face);

            //coter
            this.moteur3D_vue_coter = new Editeur_3D_minecraft.Moteur3D();
            this.moteur3D_vue_coter.Location = new System.Drawing.Point(204, 224);
            this.moteur3D_vue_coter.Name = "moteur3D";
            this.moteur3D_vue_coter.Size = new System.Drawing.Size(200, 200);
            this.moteur3D_vue_coter.TabIndex = 0;
            this.moteur3D_vue_coter.Text = "moteur3D";
            this.moteur3D_vue_haut.Anchor = (AnchorStyles.Bottom | AnchorStyles.Right);
            this.Controls.Add(this.moteur3D_vue_coter);



Merci pour votre aide charitable.

EDIT: Précision du langage dans la coloration syntaxique.

3 réponses

Messages postés
15940
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
703
Bonsoir,

je ne connais pas xna, mais un truc me frappe à la lecture de ton code
Tes 4 composants ont le même nom.

Si tu poses un TextBox que le l'appelles TextBox1, et que tu en poses un second que tu appelles pareil, ça va merder...
Ben là à mon avis c'est pareil.
Dans le composant xna le name sert un peux a rien je croix si tu l'utilise pas
Messages postés
15940
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
703
Peux tu poster un imprime écran de ce qui se passe quand tu resize ta forme?
voila
http://img11.hostingpics.net/thumbs/mini_283725Probleme.png
Messages postés
15940
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
703 > aurelien
Dans la discussion c'est bien aussi, en cliquant sur l'icône qui ressemble à une image en haut de la zone de texte.
Par contre ça ne marche pas dans les commentaire, seulement dans les réponses
Messages postés
15940
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
703
Ok est ce que tu veux c'est quoi?

Anchor sert à ancrer un bord d'un contrôle à une distance fixe du bord d'un formulaire.
Donc
            //global
            this.moteur3D_vue_Global = new Editeur_3D_minecraft.Moteur3D();
            this.moteur3D_vue_Global.Location = new System.Drawing.Point(0, 20);
            this.moteur3D_vue_Global.Name = "moteur3D";
            this.moteur3D_vue_Global.Size = new System.Drawing.Size(200, 200);
            this.moteur3D_vue_Global.TabIndex = 0;
            this.moteur3D_vue_Global.Text = "moteur3D";
            this.moteur3D_vue_Global.Anchor = (AnchorStyles.Top | AnchorStyles.Left);
            this.Controls.Add(this.moteur3D_vue_Global);

Donc là le coté gauche de ton contrôle sera toujours à 0 pixel du bord gauche du formulaire et le coté haut de ton contrôle à 20 pixels du bord haut du formulaire.
Les autres cotés n'étant pas ancrés, le contrôle ne se retaille pas en même temps que le formulaire.

Idem pour les autres.
J'ai fini par créer mon algorithme pour pourvoir resize les composant.

            int H = this.Height;
            int W = this.Width;

            int WC = (W / 2);
            int HC = (H / 2) - 24;

            Console.WriteLine(HC + " X " + WC);

            this.moteur3D_vue_Global.Size = new System.Drawing.Size(WC, HC);
            
            this.moteur3D_vue_haut.Location = new System.Drawing.Point(WC +4 , 20);
            this.moteur3D_vue_haut.Size = new System.Drawing.Size(WC, HC);

            this.moteur3D_vue_face.Location = new System.Drawing.Point(0, HC + 24);
            this.moteur3D_vue_face.Size = new System.Drawing.Size(WC, HC);

            this.moteur3D_vue_coter.Location = new System.Drawing.Point(WC +4, HC + 24);
            this.moteur3D_vue_coter.Size = new System.Drawing.Size(WC, HC);
Messages postés
15940
Date d'inscription
mardi 11 mars 2003
Statut
Contributeur
Dernière intervention
15 mai 2021
703
Ha mais nulle part tu as dit que tu voulais que ça se retaille....
Ça devrait le faire en ancrant tes contrôles à plus que 2 bords.
Ah je suis désoler. J'ai du mal expliquer ce que je voulais.