gpt4 book ai didi

c# - 如何在多边形内旋转位图?

转载 作者:行者123 更新时间:2023-11-30 21:49:07 26 4
gpt4 key购买 nike

我这样定义了一个多边形:

            <!-- 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:

    <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();

上面的代码按预期旋转了整个多边形。但是我想修改它,让多边形静止不动,只在多边形内旋转位图。

我该怎么做?谢谢

最佳答案

要在多边形内旋转图像,您可以尝试使用 ImageBrush.RelativeTransform property像下面这样:

<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 以启用此动画。更多依赖动画请看Dependent and independent animations .

在此之后,您可以调用 Storyboard2.Begin(); 开始动画。

关于c# - 如何在多边形内旋转位图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37196636/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com