IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Forms Discussion :

[C#]Dimensionnement proportionnel d'une fenêtre


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 113
    Par défaut [C#]Dimensionnement proportionnel d'une fenêtre
    Bonjour à tous,

    Ce serait pour savoir si il était possible, lors d'un redimensionnement de fenêtre avec la souris, de forcer un redimensionnement par un rapport hauteur largeur afin que celui ci soit toujours conservé.

    Je vous remercie

  2. #2
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Tu as l'évènement resize où il te faudra parcourir tous tes contrôles afin de les redimensionner par rapport aux nouvelles dimensions de ta fenêtre.

    Un exemple sur Pocket PC où je redimensionnais qu'au niveau de la largeur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    protectedSize myOriginalSize;
     
    public Real()
    {
       myOriginalSize = newSize(320, 240);
    }
     
    privatevoid Real_Resize(object sender, EventArgs e)
    {
       float div = Convert.ToSingle(this.ClientSize.Width) / Convert.ToSingle(myOriginalSize.Width);
       int Percent = Convert.ToInt32(div * 100.0);
       myOriginalSize = this.ClientSize;
       Percent = Percent - 100;
       if (Percent != 0 && Percent != 100)
       {
          foreach (TabPage t in tabControl.TabPages)
          {
             foreach (Control c in t.Controls)
            {
                if (c isLabel || c isTextBox || c isCheckBox || c isComboBox || c isButton || c isPanel || c isRadioButton || c isDateTimePicker || c isPictureBox)
                {
                   if (Percent < 0)
                   {
                      float tmp1 = (float)(Convert.ToSingle(c.Width) / 100.0);
                      float tmp2 = (float)(100.0 - Convert.ToSingle(Math.Abs(Percent)));
                      c.Width = Convert.ToInt32(tmp1 * tmp2) - AutoScrollMargin.Width;
                      float tmp3 = (float)(Convert.ToSingle(c.Location.X) / 100.0);
                      Point tmpSize = c.Location;
                      tmpSize.X = Convert.ToInt32(tmp3 * tmp2);
                      c.Location = tmpSize;
                   }
                   else
                   {
                      float tmp1 = (float)(Convert.ToSingle(c.Width) / 100.0);
                      float tmp2 = (float)(100.0 + Convert.ToSingle(Math.Abs(Percent)));
                      c.Width = Convert.ToInt32(tmp1 * tmp2) - AutoScrollMargin.Width;
                      float tmp3 = (float)(Convert.ToSingle(c.Location.X) / 100.0);
                      Point tmpSize = c.Location;
                      tmpSize.X = Convert.ToInt32(tmp3 * tmp2);
                      c.Location = tmpSize;
                   }
                }
             }
          }
       }
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 113
    Par défaut
    Merci, j'avais aussi pensé à trappé le messige "Resize" récupérer la hauteur ou la largeur et de recalibrer la fenêtre pour qu'elle reste proportionnelle dimensionner. Mais j'aurais aimé savoir si il n'existait pas déjà un attribut pour permettre que cela soit fait directement. Du style : "this.proportional = true" ou une fonction qui prend en paramètre un rapport de proportion.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    113
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2004
    Messages : 113
    Par défaut
    Erf j'avais pas fini mon message. Enfin merci de ta réponse et je pense que si j'ai rien de neuf sur le sujet d'ici cet après-midi je vais développer directement une fonction qui permettra de prendre en paramètre un objet et de lui appliquer un rapport de taille.

  5. #5
    Rédacteur

    Avatar de Jérôme Lambert
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2003
    Messages
    4 451
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 451
    Par défaut
    Non il n'y a pas ce genre de chose, d'ailleurs c'est un gros manque pour les développeurs d'applications Windows / Mobile.

    Cependant, un système de redimensionnement automatique a été incorporé avec le Framewok 3 d'après ce que j'ai vu.

  6. #6
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    481
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 481
    Par défaut
    bonjour Lucier ,
    Si tu as eu réponse a ton post ou que tu as trouvé une solution, merci de le marqué

    Merci

    Notalp

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/08/2010, 09h50
  2. [Plugin] Fancybox ouvrir une fenêtre dimensionnée
    Par condon dans le forum jQuery
    Réponses: 14
    Dernier message: 23/06/2009, 08h33
  3. redimensionnement proportionnel d'une fenêtre Tk
    Par regnier1 dans le forum Tkinter
    Réponses: 6
    Dernier message: 29/03/2008, 10h05
  4. Désactiver le dimensionnement d'une fenêtre
    Par xchoeur dans le forum C++Builder
    Réponses: 4
    Dernier message: 05/10/2007, 09h16
  5. Réponses: 3
    Dernier message: 30/01/2007, 18h23

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo