【问题标题】:Showing animated images on WP7在 WP7 上显示动画图像
【发布时间】:2011-12-24 23:38:13
【问题描述】:

我希望我的应用在加载某些内容时显示加载的动画图像,我尝试添加一个已经制作的动画 .gif,但似乎 WP7 不支持...

图片是这样加载的:

我正在考虑制作一种在 2D 游戏中的精灵表之间滚动的方法,但是制作这种方法需要付出太多努力,而且我不确定它是否可以在 Silverlight 中工作,还有其他简单的解决方案那个?

【问题讨论】:

  • Silverlight 不支持动画 gif - 谷歌“animated gif silverlight”寻找替代品

标签: c# silverlight image windows-phone-7


【解决方案1】:

很遗憾,Silverlight 不支持动画 GIF。对我来说,使用 Blend 和一些类似于您在上面发布的无限递归的矢量图形效果很好。如果您想重用它,请尝试创建一个用户控件。

【讨论】:

    【解决方案2】:

    我之前改编过Dean Chalk's基于XAML的加载器;它可以很好地用作叠加层。只需在不做后台工作时将其 Visibility 设置为 Hidden,然后当您希望在后台执行操作时使用加载指示器阻止部分 UI 时将其切换为 Visible。动画是在 XAML 中定义的,因此不需要任何代码或技巧即可使其旋转。

    以下是相关位:

    <Canvas RenderTransformOrigin="0.5,0.5" Width="120" Height="120"> 
        <Ellipse Width="21.835" Height="21.862" Canvas.Left="20.1696" Canvas.Top="9.76358" 
            Stretch="Fill" Fill="#E6000000"/> 
        <Ellipse Width="21.835" Height="21.862" Canvas.Left="2.86816" Canvas.Top="29.9581" 
            Stretch="Fill" Fill="#CD000000"/> 
        <Ellipse Width="21.835" Height="21.862" Canvas.Left="5.03758e-006" Canvas.Top="57.9341" 
            Stretch="Fill" Fill="#B3000000"/> 
        <Ellipse Width="21.835" Height="21.862" Canvas.Left="12.1203" Canvas.Top="83.3163" 
            Stretch="Fill" Fill="#9A000000"/> 
        <Ellipse Width="21.835" Height="21.862" Canvas.Left="36.5459" Canvas.Top="98.138" 
            Stretch="Fill" Fill="#80000000"/> 
        <Ellipse Width="21.835" Height="21.862" Canvas.Left="64.6723" Canvas.Top="96.8411" 
            Stretch="Fill" Fill="#67000000"/> 
        <Ellipse Width="21.835" Height="21.862" Canvas.Left="87.6176" Canvas.Top="81.2783" 
            Stretch="Fill" Fill="#4D000000"/> 
        <Ellipse Width="21.835" Height="21.862" Canvas.Left="98.165" Canvas.Top="54.414" 
            Stretch="Fill" Fill="#34000000"/> 
        <Ellipse Width="21.835" Height="21.862" Canvas.Left="92.9838" Canvas.Top="26.9938" 
            Stretch="Fill" Fill="#1A000000"/> 
        <Ellipse Width="21.835" Height="21.862" Canvas.Left="47.2783" Canvas.Top="0.5" 
            Stretch="Fill" Fill="#FF000000"/> 
        <Canvas.RenderTransform> 
            <RotateTransform x:Name="SpinnerRotate" Angle="0" /> 
        </Canvas.RenderTransform> 
        <Canvas.Triggers> 
            <EventTrigger RoutedEvent="ContentControl.Loaded"> 
                <BeginStoryboard> 
                    <Storyboard> 
                        <DoubleAnimation Storyboard.TargetName="SpinnerRotate" 
                                 Storyboard.TargetProperty="(RotateTransform.Angle)" 
                                 From="0" To="360" Duration="0:0:01" 
                                 RepeatBehavior="Forever" /> 
                    </Storyboard> 
                </BeginStoryboard> 
            </EventTrigger> 
        </Canvas.Triggers> 
    </Canvas> 
    

    You can click this link for more details. 这是 WPF,因此可能需要一些工作才能使其适应 WP7。

    顺便说一句,当我说“叠加”时,我的意思是把一个元素放在另一个元素上。如:

    <Grid>
      <t:MyUserControl />
      <t:MyOverlayUserControl Visibility="Hidden" />
    </Grid>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-14
      • 2013-08-23
      • 2012-12-28
      • 1970-01-01
      • 2013-01-16
      • 1970-01-01
      相关资源
      最近更新 更多