私はビジュアルブラシ内のいくつかの図形をアニメーション化しようとしていますが、回転を実行すると図形が「パルス」します。私は、形状が回転するにつれて、境界ボックスがレイアウト・パスを強制していると仮定しています。しかし、私はRenderTransformを使用しているので、私はこれがレイアウトの変更を引き起こすことを期待していませんでした。WPFのRenderTransformが予期しないレイアウト変更を引き起こす
このコードは、問題を示しています。
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="200" Width="200">
<StackPanel>
<Border BorderBrush="Red" BorderThickness="1"
Height="100" Width="100">
<Border.Triggers>
<EventTrigger RoutedEvent="FrameworkElement.Loaded">
<BeginStoryboard>
<Storyboard RepeatBehavior="Forever" >
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="inner_Ellipse"
Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)">
<LinearDoubleKeyFrame KeyTime="0:0:3" Value="-360"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
<BeginStoryboard>
<Storyboard RepeatBehavior="Forever" >
<DoubleAnimationUsingKeyFrames Storyboard.TargetName="outer_Ellipse"
Storyboard.TargetProperty="(UIElement.RenderTransform).(RotateTransform.Angle)">
<LinearDoubleKeyFrame KeyTime="0:0:3" Value="360"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Border.Triggers>
<Border.Background>
<VisualBrush Stretch="Uniform">
<VisualBrush.Visual>
<Canvas Width="20" Height="20">
<Ellipse x:Name="outer_Ellipse"
Stroke="Blue" StrokeThickness="1"
Width="20" Height="20"
RenderTransformOrigin="0.5,0.5">
<Ellipse.RenderTransform>
<RotateTransform/>
</Ellipse.RenderTransform>
</Ellipse>
<Ellipse x:Name="inner_Ellipse"
Stroke="Red" StrokeThickness="1"
Width="18" Height="18"
Margin="1,1,0,0"
RenderTransformOrigin="0.5,0.5">
<Ellipse.RenderTransform>
<RotateTransform/>
</Ellipse.RenderTransform>
</Ellipse>
</Canvas>
</VisualBrush.Visual>
</VisualBrush>
</Border.Background>
</Border>
</StackPanel>
これは私が3dに操作されている2Dの平面を飾るためにビジュアルブラシを使用していますはるかに複雑アプリケーションの簡単なサンプルです。私はブラシを試してアニメーションするまでうまく動作します。私はいくつかの異なるアプローチを試しましたが、このレイアウトの問題に常に遭遇しているようです。
感謝の意を表します。
ロブ
はい、私は、内部コンテンツは、視覚が適用されるオブジェクトよりも大きくはないと仮定すると、それを固定された伸縮性をオフにすることを認識していました。あなたの例はおそらく問題をより良く説明します。問題は、ブラシがデータ型から来て、ストレッチが装飾されているコントロールのサイズによって正しい動作であるという私の「内容」です。基本的には、ビジュアルが境界の境界ボックスを超えている場合、ビジュアルを「クリップ」する必要があります。ありがとう – rjw