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 Presentation Foundation Discussion :

Redimensionnement Window en repsectant un rapport hauteur/largeur


Sujet :

Windows Presentation Foundation

  1. #1
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut Redimensionnement Window en repsectant un rapport hauteur/largeur
    Bonjour,

    Lorsqu'on autorise le redimensionnement manuel d'une fenêtre, est-il possible de contraindre ce redimensionnement à respecter à un certain rapport entre la hauteur et la largeur de la fenêtre ?
    (\ _ /)
    (='.'=)
    (")-(")

  2. #2
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Salut,

    Voici un post qui en parle (si j'ai bien compris ce que tu veux ) :
    http://www.developpez.net/forums/sho...d.php?t=558535

    Deux solutions y sont proposées.

  3. #3
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Salut, non tu n'as pas bien compris ce que je veux.

    J'utilise déjà le ViewBox pour redimmensionner les composants de ma fenêtre. Ce que je voudrais maintenant, c'est pouvoir contraindre le redimensionnement manuel de la fenêtre à respecter un rapport hauteur / largeur pour celle-ci ?

    Tu vois ce que je veux dire ?


    Pour ceux qui veulent comprendre l'intérêt de ma demande, voici un exemple :

    Code xml : 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
    <Window x:Class="AdresseParDéfautWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="Adresse par défaut" Height="99" Width="599" WindowStyle="ToolWindow" AllowsTransparency="False" Opacity="2" ResizeMode="CanResize" SizeToContent="Manual" Name="Window1">
        <Viewbox >
            <Grid ShowGridLines="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
                <Grid.RowDefinitions>
                    <RowDefinition Height="30*" />
                    <RowDefinition Height="30*" />
                </Grid.RowDefinitions>
                <Grid.ColumnDefinitions>
                    <ColumnDefinition Width="72.99" />
                    <ColumnDefinition Width="458.01" />
                    <ColumnDefinition Width="48" />
                </Grid.ColumnDefinitions>
                <Button Grid.Column="2" Margin="6,8.52,6,5.48" Name="Button1">X</Button>
                <Button Grid.Column="2" Grid.Row="1" Margin="6,8,6,6" Name="Button2">X</Button>
                <TextBlock Margin="12,8,6,6" Name="TextBlock1" Text="Voie" HorizontalAlignment="Left" VerticalAlignment="Center" />
                <TextBlock Margin="12,8,6,6" Name="TextBlock2" Text="Commune" Grid.Row="1" HorizontalAlignment="Left" VerticalAlignment="Center" />
            <ComboBox Grid.Column="1" HorizontalAlignment="Left" Margin="6,8,0,4" Name="ComboBox1" Width="142" />
            <ComboBox Margin="6,5.48,6,6.52" Name="ComboBox2" Grid.Column="1" Grid.Row="1" />
            <ComboBox Margin="154,8,6,4" Name="ComboBox3" Grid.Column="1" />
        </Grid>
        </Viewbox>
    </Window>
    Si vous redimensionnez la fenêtre pour l'agrandir, vous verrez qu'il est plus efficace de contraindre ce redimensionnement à respecter le rapport hauteur / largeur initial de la fenêtre.
    (\ _ /)
    (='.'=)
    (")-(")

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Tu as essayé en faisant un Binding entre la hauteur et la largeur de te fenêtre avec, éventuellement, un Converter dans le cas où tu veux utiliser un ratio ?

  5. #5
    Membre expert
    Profil pro
    Inscrit en
    Décembre 2004
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2004
    Messages : 2 210
    Points : 3 015
    Points
    3 015
    Par défaut
    Citation Envoyé par Thomas Lebrun
    Tu as essayé en faisant un Binding entre la hauteur et la largeur de te fenêtre avec, éventuellement, un Converter dans le cas où tu veux utiliser un ratio ?
    Oui mais les fontSize des contrôles vont elles suivre comme avec le viewBox ?

    Sinon j'avais pensé aussi à ça (jeu avec le conteneur Grid, pas de ViewBox, le code suivant parle de lui même) :
    Code xml : 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
    <Window 
      x:Class="WpfExpanderAppli.Window1"
      xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
      xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
      Title="Adresse par défaut" 
      Height="100" Width="600" 
      WindowStyle="ToolWindow" 
      AllowsTransparency="False" Opacity="2" 
      ResizeMode="CanResize" SizeToContent="Manual" x:Name="Wind1" 
      >
     
      <Grid x:Name="MainGrid" ShowGridLines="False" HorizontalAlignment="Stretch" VerticalAlignment="Stretch">
        <Grid.RowDefinitions>
          <RowDefinition Height="30*" />
          <RowDefinition Height="30*" />
        </Grid.RowDefinitions>
        <Grid.ColumnDefinitions>
          <ColumnDefinition Width="0.2*" />
          <ColumnDefinition Width="0.7*" />
          <ColumnDefinition Width="0.1*" />
        </Grid.ColumnDefinitions>
     
        <Grid Grid.Column="1" >
          <Grid.ColumnDefinitions>
            <ColumnDefinition Width="0.4*" />
            <ColumnDefinition Width="0.6*" />
          </Grid.ColumnDefinitions>
     
          <ComboBox Grid.Column="0" Margin="6,8,0,4" Name="ComboBox1" />
          <ComboBox Margin="6,8,6,4" Name="ComboBox3" Grid.Column="1" />
     
        </Grid>
     
        <ComboBox Margin="6,8,6,6" Name="ComboBox2" Grid.Column="1" Grid.Row="1" />
     
        <TextBlock Margin="12,8,6,6" Name="TextBlock1" Text="Voie" HorizontalAlignment="Left" VerticalAlignment="Center" />
        <TextBlock Margin="12,8,6,6" Grid.Row="1" Name="TextBlock2" Text="Commune" HorizontalAlignment="Left" VerticalAlignment="Center" />
     
        <Button Grid.Column="2" Margin="6,8,6,6" Name="Button1">X</Button>
        <Button Grid.Column="2" Grid.Row="1" Margin="6,8,6,6" Name="Button2">X</Button>
     
      </Grid>
    </Window>

    Problématique : les fontSize des contrôles ne suivent pas... il faut peut-être les calculer à coup de binding et converter (mais ça devient lourd à gérer je pense)

  6. #6
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Salut,

    L'idée de Thomas me parait excellente ! Je la testerai correctement ce soir car là je n'ai pas le temps de me pencher dessus et je n'ai pas réussi du premier coup.

    binoo, ta solution est trop complexe car effectivement je veux garder le resize du texte avec le Viewbox.
    (\ _ /)
    (='.'=)
    (")-(")

  7. #7
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Pour l'idée de Thomas, le Binding fonctionne (avec ou sans converter). Mais la modification manuelle de la largeur de la fenêtre une fois celle-ci ouverte n'est pas capté par le binding. Donc la mise à jour ne se fait qu'à l'ouverture de la fenêtre, c'est tout.

    Dans le but de mieux capter l'événement de mise à jour et/ou y implémenter directement le "convertisseur" (la contrainte de dimensionnement) y aurait-il selon vous quelque chose à faire du côté de la validation et des rappels de propriétés de dépendance Height ou Width, avec éventuellement une méthode comme CoerceValue ?
    (\ _ /)
    (='.'=)
    (")-(")

  8. #8
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Et si tu t'abonnes à l'event Resize de ta Window pour remettre la procédure de redimensionnement ?

  9. #9
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    En faisant ça je risque de créer l'événement Resize en chaine.
    (\ _ /)
    (='.'=)
    (")-(")

  10. #10
    Membre expérimenté
    Avatar de FRED.G
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    1 032
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 1 032
    Points : 1 505
    Points
    1 505
    Par défaut
    Bon pour résumer :

    - la solution du Binding sur la propriété de dépendance Width ou Heigth était la plus élégante mais la liaison n'est pas mise à jour lors du redimmensionnement après ouverture de la fenêtre

    - la solution de redimensionner dans l'événement Resize fonctionne, mais côté ergonomie et esthétique, c'est pas encore ça

    - donc je pense que j'essairai plutôt de caser quelque part un petit slider pour permettre un redimensionnement manuel précis et intuitif. C'est le même principe qui est utilisé en mode Design sous VS, et ça revient à la première solution (le Binding) sauf que je fais dépendre la mise à jour d'un élément que je maîtrise (le slider) au lieu d'une propriété de dépendance (Window.Height) qui ne notifie pas toujours ses changements.

    Merci pour votre aide.
    (\ _ /)
    (='.'=)
    (")-(")

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

Discussions similaires

  1. [1.x] Connaitre la taille (hauteur/largeur) d'une image uploadé
    Par Malonix dans le forum Symfony
    Réponses: 11
    Dernier message: 08/07/2010, 12h09
  2. Hauteur, largeur d'une scrollbar
    Par stephane.julien dans le forum C#
    Réponses: 1
    Dernier message: 24/04/2008, 11h37
  3. [IMAGE] Comment obtenir hauteur largeur d'une image ??
    Par pouillou dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 05/05/2006, 21h38
  4. [DOM] capturer la hauteur, largeur ?
    Par laurent_h dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 05/05/2006, 13h35
  5. upload d'image et verification d la taille (hauteur/largeur)
    Par NoobX dans le forum Général JavaScript
    Réponses: 39
    Dernier message: 13/01/2006, 17h41

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