Problème Resize dans une winforms quatre composent.

Résolu/Fermé
aurelien - Modifié par Whismeril le 27/03/2015 à 22:58
 aurelien - 29 mars 2015 à 06:28
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.
A voir également:

3 réponses

Utilisateur anonyme
27 mars 2015 à 23:03
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.
0
Dans le composant xna le name sert un peux a rien je croix si tu l'utilise pas
0
Utilisateur anonyme
28 mars 2015 à 07:43
Peux tu poster un imprime écran de ce qui se passe quand tu resize ta forme?
0
voila
http://img11.hostingpics.net/thumbs/mini_283725Probleme.png
0
Utilisateur anonyme > aurelien
28 mars 2015 à 13:37
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
0
Utilisateur anonyme
28 mars 2015 à 13:43
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.
0
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);
0
Utilisateur anonyme
28 mars 2015 à 18:29
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.
0
Ah je suis désoler. J'ai du mal expliquer ce que je voulais.
0