【问题标题】:WPF how to rotate a spherical image around z axisWPF如何围绕z轴旋转球形图像
【发布时间】:2013-07-21 23:07:42
【问题描述】:

我有一个球形图像,我想围绕它的 z 轴旋转。我尝试了以下代码,它可以工作,但图像围绕 x 轴旋转。

<Image Name="logo" Grid.Column="1" Source="MyLogo.png"
           Width="140" Height="140" VerticalAlignment="Top" 
           HorizontalAlignment="Left" Margin="80,10,0,0" Grid.Row="1"
           >
        <Image.RenderTransform>
            <RotateTransform x:Name="TransRotate" CenterX="70" CenterY="70" />
        </Image.RenderTransform>
        <Image.Triggers>
            <EventTrigger RoutedEvent="Image.Loaded">
                <BeginStoryboard>
                    <Storyboard TargetProperty="Angle">
                        <DoubleAnimation
                     Storyboard.TargetName="TransRotate" 
                     Storyboard.TargetProperty="Angle"
                     By="360" 
                     Duration="0:0:10"  
                     AutoReverse="False" 
                     RepeatBehavior="Forever" />
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Image.Triggers>
    </Image>

【问题讨论】:

    标签: wpf image rotation


    【解决方案1】:

    如果RotateTransform 不绕右轴旋转,请尝试ScaleTransform

    <Image Name="logo" Grid.Column="1" Source="MyLogo.png"
           Width="140" Height="140" VerticalAlignment="Top" 
           HorizontalAlignment="Left" Margin="80,10,0,0" Grid.Row="1"
           RenderTransformOrigin="0.5,0.5">
        <Image.RenderTransform>
            <ScaleTransform  x:Name="TransScale" />
        </Image.RenderTransform>
        <Image.Triggers>
            <EventTrigger RoutedEvent="Image.Loaded">
                <BeginStoryboard>
                    <Storyboard>
                        <DoubleAnimation
                            Storyboard.TargetProperty="ScaleX"
                            Storyboard.TargetName="TransScale"
                            To="-1" 
                            Duration="0:0:10"  
                            AutoReverse="True"
                            RepeatBehavior="Forever">
                            <DoubleAnimation.EasingFunction>
                                <SineEase EasingMode="EaseInOut" />
                            </DoubleAnimation.EasingFunction>
                        </DoubleAnimation>
                    </Storyboard>
                </BeginStoryboard>
            </EventTrigger>
        </Image.Triggers>
    </Image>
    

    我在Image 控件上使用了RenderTransformOrigin,而不是CenterXCenterY,因为它与大小无关。我添加了一个正弦EasingFunction 以获得更流畅的动画效果。

    【讨论】:

    • 嗨 LPL,它围绕 Z 轴旋转,但看起来不像 3D 旋转。问题是如何保持球面效果?
    • 对不起,我误解了你的问题。但我不知道使用 RotateTransform 的旋转如何看起来像 3D 旋转。你能具体说明你想要达到的目标吗?
    • 我的图像是一个球体,我想围绕它的中心旋转它,就是这样。上面的代码围绕它的中心旋转球体,但它在旋转的地方不像球,而是像一条垂直线。如果您有球形图像,请尝试使用它并了解问题所在。
    • 如果你想要 3D 动画,那么你需要使用 3D 动画类。
    猜你喜欢
    • 2011-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 1970-01-01
    • 2011-08-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多