2

私はaを回転させてBorder、回転MainWindowによって奪われた新しいスペースに基づいて彼のサイズを変更してBorderもらいます。設定しましSizeToContent="WidthAndHeight"たが、境界線を回転させてもウィンドウサイズは変わりません。

Widthプログラムでメインウィンドウのとを設定する必要がありますHeightか、それとも他の方法でxamlコードを変更することで実現できますか?

私のxamlコード:

<Window x:Class="MyClass.MainWindow"
        WindowStyle="None" AllowsTransparency='True' 
        Topmost='False' Background="Transparent"  ShowInTaskbar='False' 
        SizeToContent="WidthAndHeight" WindowStartupLocation="Manual">
    <Border Name="MyBorder" 
            BorderBrush="Transparent"
            Background="Transparent"
            HorizontalAlignment="Left" 
            VerticalAlignment="Top"
            RenderTransformOrigin="0.5,0.5">
    </Border>
</Windows>

私のc#コードWindow_KeyDown

# RotateTransform rt = new RotateTransform()クラスレベルで宣言されます。

if (e.Key == Key.I)
                {
                    if (rt.Angle + 1 < 360)
                    {
                        rt.Angle += 1;                    
                    }
                    else
                    {
                        rt.Angle = 0;                   
                    }    



                MyBorder.RenderTransform = rt;
            }
4

1 に答える 1

4

LayoutTransformの代わりに使用RenderTransform

MSDNから:変換の概要

  • LayoutTransform –レイアウトパスの前に適用される変換。変換が適用された後、レイアウトシステムは要素の変換されたサイズと位置を処理します。

  • RenderTransform –要素の外観を変更するが、レイアウトパスの完了後に適用される変換。LayoutTransformプロパティの代わりにRenderTransformプロパティを使用すると、パフォーマンス上の利点を得ることができます。

<Border Name="MyBorder"  
        BorderBrush="Transparent" 
        Background="Transparent" 
        HorizontalAlignment="Left"  
        VerticalAlignment="Top" 
        RenderTransformOrigin="0.5,0.5">
    <Border.LayoutTransform>
        <RotateTransform Angle="90"/>
    </Border.LayoutTransform>
</Border>

だからあなたの場合

RotateTransform rt = new RotateTransform(0.0, 0.5, 0.5);
private void Window_KeyDown(object sender, KeyEventArgs e)
{
    if (e.Key == Key.I)
    {
        if (rt.Angle + 1 < 360)
        {
            rt.Angle += 1;
        }
        else
        {
            rt.Angle = 0;
        }
        MyBorder.LayoutTransform = rt;
    }
}}
于 2012-06-11T10:59:37.283 に答える