【发布时间】:2010-10-25 21:03:53
【问题描述】:
如何通过 xaml 代码连续更改图像源?
【问题讨论】:
-
“连续”?你什么意思?
-
我想用另一个替换2个图像,我的意思是我想显示1.jpg,一秒钟后,2.jpg并一遍又一遍地重复
如何通过 xaml 代码连续更改图像源?
【问题讨论】:
就地情况下:
<Image Source="smiley_stackpanel.png" Stretch="Fill"/>
如果在风格上:
<Style TargetType="Image">
<Setter Property="Source" Value="c:\asd.jpg" />
</Style>
【讨论】:
这主要来自记忆,因此可能存在一个小错误,但基本上,您需要放入两个图像,并为它们的不透明度值设置动画:
<Grid>
<Image x:Name="imgOne" Source="image1.png">
<Image.Triggers>
<EventTrigger RoutedEvent="Image.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="imgOne"
Storyboard.TargetProperty="(Image.Opacity)"
To="0"
Duration="0:0:1"
AutoReverse="True"
RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Image.Triggers>
</Image>
<Image x:Name="imgTwo" Source="image1.png" Opacity="0">
<Image.Triggers>
<EventTrigger RoutedEvent="Image.Loaded">
<BeginStoryboard>
<Storyboard>
<DoubleAnimation
Storyboard.TargetName="imgTwo"
Storyboard.TargetProperty="(Image.Opacity)"
To="1"
Duration="0:0:1"
AutoReverse="True"
RepeatBehavior="Forever" />
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Image.Triggers>
</Image>
</Grid>
严格来说,您可能不需要第一个动画,除非第二个图像有一些透明区域或没有完全覆盖第一个。
另外,YMMV - 这会有点消耗资源,因为它发生得如此之快且频繁。
【讨论】: