2

次のように Polygon を定義しました。

            <!-- Draws a hexagon by specifying the vertices of a polygon -->
            <Polygon x:Name="polygon"
                     Points="0,50 0,120 50,170 120,170 170,120 170,50 120,0 50,0"
                     Margin="25, 0, 25, 25"
                     Stroke="Red"
                     RenderTransformOrigin="0.5,0.5">

                <Polygon.RenderTransform>
                    <CompositeTransform />
                </Polygon.RenderTransform>

                <Polygon.Fill>
                    <ImageBrush x:Name="imageBrush"
                                ImageSource="Assets/image1.jpg"
                                Stretch="Fill">
                    </ImageBrush>
                </Polygon.Fill>
            </Polygon>

また、次のようなストーリーボードを定義しました。

    <Storyboard x:Name="Storyboard2">
        <DoubleAnimationUsingKeyFrames Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.Rotation)"
                                       Storyboard.TargetName="polygon">
            <EasingDoubleKeyFrame KeyTime="0"
                                  Value="0" />
            <EasingDoubleKeyFrame KeyTime="0:0:2"
                                  Value="-360" />
        </DoubleAnimationUsingKeyFrames>
    </Storyboard>

次のようにポリゴンの回転を開始します。

        Storyboard2.BeginTime = new TimeSpan( 0 );
        Storyboard2.Begin();

上記のコードは、期待どおりにポリゴン全体を回転させます。ただし、それを変更し、ポリゴンを静止させ、ポリゴン内でビットマップを回転させたいと思います。

それ、どうやったら出来るの?どうも

4

2 に答える 2

2

ポリゴン内で画像を回転するには、次のようなImageBrush.RelativeTransformプロパティを試してください。

<Polygon x:Name="polygon"
         Margin="25, 0, 25, 25"
         Points="0,50 0,120 50,170 120,170 170,120 170,50 120,0 50,0"
         Stroke="Red">
    <Polygon.Fill>
        <ImageBrush x:Name="imageBrush" ImageSource="Assets/Capture.PNG" Stretch="Fill">
            <ImageBrush.RelativeTransform>
                <CompositeTransform CenterX="0.5" CenterY="0.5" />
            </ImageBrush.RelativeTransform>
        </ImageBrush>
    </Polygon.Fill>
</Polygon>

そして、あなたのStoryboardようなものを次のように変更してください:

<Storyboard x:Name="Storyboard2">
    <DoubleAnimationUsingKeyFrames EnableDependentAnimation="True"
                                   Storyboard.TargetName="imageBrush"
                                   Storyboard.TargetProperty="(Brush.RelativeTransform).(CompositeTransform.Rotation)">
        <EasingDoubleKeyFrame KeyTime="0" Value="0" />
        <EasingDoubleKeyFrame KeyTime="0:0:2" Value="-360" />
    </DoubleAnimationUsingKeyFrames>
</Storyboard>

ここでは、ターゲットがImageBrushであるため、 に変更Storyboard.TargetPropertyする必要があり(Brush.RelativeTransform).(CompositeTransform.Rotation)ます。アニメーションのターゲットとして、Brush.RelativeTransform従属アニメーションです。このアニメーションを有効にするには、EnableDependentAnimationプロパティをに設定する必要があります。true依存型アニメーションの詳細については、「依存型アニメーションと独立型アニメーション」を参照してください。

Storyboard2.Begin();この後、呼び出してアニメーションを開始できます。

于 2016-05-13T10:02:42.060 に答える