72 votes

Comment effectuer une rotation autour du centre de contrôle en XAML

Je veux faire pivoter le bouton à 90 degrés, mais il est coupé parce qu’il tourne de 0 à 0,05. Comment le faire pivoter autour du centre si je ne le sais pas, largeur en pixels (c'est un modèle pour beaucoup de boutons)

118voto

Vous devez définir le RenderTransformOrigin du contrôle sur 0.5, 0.5.

ex.:

 <Button RenderTransformOrigin="0.5, 0.5">
    <RepeatButton.RenderTransform>
        <RotateTransform Angle="90"/>
    </RepeatButton.RenderTransform>
</RepeatButton>
 

52voto

Andy Points 1640
<Button ...>
  <Button.LayoutTransform>
    <RotateTransform CenterX="0.5" CenterY="0.5" Angle="90"/>
  </Button.LayoutTransform>
</Button>

2voto

grantnz Points 3569

Ma compréhension est que l'origine n'est pas en rapport avec un LayoutTransform.

MSDN dit:

Définition d'une transformation fournit de puissantes capacités de mise à l'échelle et de la rotation. Cependant, LayoutTransform ignore TranslateTransform les opérations. C'est parce que le système de mise en page le comportement de l'enfant éléments d'une FrameworkElement auto-corrige d'éventuelles compensations à l' la position de l'échelle ou de rotation de l'élément dans la mise en page et de coordonner les système de l'élément parent.

et les "correctement" tourne le bouton.

<Grid ShowGridLines="True">
    <Grid.RowDefinitions>
        <RowDefinition></RowDefinition>
        <RowDefinition Height="Auto"></RowDefinition>
        <RowDefinition></RowDefinition>
    </Grid.RowDefinitions>
    <Grid.ColumnDefinitions>
        <ColumnDefinition></ColumnDefinition>
        <ColumnDefinition Width="Auto"></ColumnDefinition>
        <ColumnDefinition></ColumnDefinition>
    </Grid.ColumnDefinitions>
    <Button Grid.Row="1" Grid.Column="1">Excessively Long Button Still Ok
        <Button.LayoutTransform>
            <RotateTransform Angle="90" />
        </Button.LayoutTransform>
    </Button>
</Grid>

0voto

Andreas Points 468
        <Image >
            <Image.RenderTransform>
                <TransformGroup>
                    <ScaleTransform/>
                    <SkewTransform/>
                    <RotateTransform Angle="90"/>
                    <TranslateTransform/>
                </TransformGroup>
            </Image.RenderTransform>
        </Image>

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X