行動に問題がありRotateTransform
ます。
内にユーザー コントロールがあり、Grid
-135 度回転していますが、その形状を の限界まで移動すると、Grid
回転がないように見えて消え始めます。どうすればこれを修正できますか?
2 に答える
UserControl
あなたの説明から判断すると、は の境界によって切り取られていると思いますGrid
。これは、予想されるデフォルトの動作です。ClipToBounds
のプロパティを設定して、Grid
外部で実行されるコンテンツがクリップされないようにすることができます。
たとえば、次のことを考慮してください。
<Window x:Class="WpfApplication1.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Window1" Height="300" Width="300">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="50"/>
<RowDefinition Height="*"/>
<RowDefinition Height="50"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="50"/>
<ColumnDefinition Width="*"/>
<ColumnDefinition Width="50"/>
</Grid.ColumnDefinitions>
<Grid Grid.Row="1" Grid.Column="1" ClipToBounds="True" Background="Blue">
<Label Content="Testing a long label to see what happens" Background="Gray" RenderTransformOrigin=".5,.5">
<Label.RenderTransform>
<RotateTransform Angle="-135"/>
</Label.RenderTransform>
</Label>
</Grid>
</Grid>
</Window>
これにより、次の結果が得られます。
代替テキスト http://img514.imageshack.us/img514/8485/screenshotmf.png
に変更ClipToBounds
すると、次のようになりtrue
ます。
代替テキスト http://img36.imageshack.us/img36/2682/screenshottz.png
回転が適用されている場所に問題がある可能性があります。
RotateTransformには2つのプロパティ(CenterX、CenterY)があり、回転するポイントを決定します。
MSDNから引用します
RotateTransformのCenterXプロパティとCenterYプロパティは、オブジェクトが回転するポイントを指定します。この中心点は、変換される要素の座標空間で表されます。デフォルトでは、回転は(0,0)に適用されます。これは、変換するオブジェクトの左上隅です。
次の例では、ポリラインオブジェクトをポイント(25,50)を中心に時計回りに45度回転します。
オブジェクトの左上を中心に回転している可能性があります。それが下にあるキャンバスの左上に設定されている場合は、キャンバススペースの外側で回転します。
お役に立てれば