在WP7上显示动画图像

时间:2011-11-09 03:11:21

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

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

图片是这样加载的: enter image description here

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

2 个答案:

答案 0 :(得分:4)

之前我已经改编了Dean Chalk's基于XAML的加载器;它作为一个叠加层工作得很好。在不进行后台工作时,只需将其“可见性”设置为“隐藏”,然后在希望在后台执行操作时使用加载指示器阻止部分UI时将其切换为“可见”。动画在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>

答案 1 :(得分:2)

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