在 WPF 中,我有 2 个图像,我需要创建一个闪烁效果(不使用不透明度)。假设我有a.png和b.png,第一步显示a.png,0.5秒后显示b.png,0.5秒后显示a.png,不断重复。
我已经浏览了论坛,但我仍然没有运气在 vb 中获得示例,请帮助。
您可以使用适当的动画而无需任何代码:
<Window.Resources>
<BitmapImage x:Key="Image1" UriSource="C:\Users\Public\Pictures\Sample Pictures\Koala.jpg"/>
<BitmapImage x:Key="Image2" UriSource="C:\Users\Public\Pictures\Sample Pictures\Jellyfish.jpg"/>
</Window.Resources>
...
<Image x:Name="image" Source="{StaticResource Image1}">
<Image.Triggers>
<EventTrigger RoutedEvent="Loaded">
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Storyboard.TargetProperty="Source"
Duration="0:0:1"
RepeatBehavior="Forever">
<DiscreteObjectKeyFrame Value="{StaticResource Image2}"
KeyTime="0:0:0.5"/>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger>
</Image.Triggers>
</Image>
也许用Loaded
更适合您需求的事件替换事件。
如果您真的想在后面的代码中执行此操作,您可以创建一个Interval
设置为半秒的 DispatcherTimer,并在计时器的Tick
事件处理程序中将图像的属性交替设置Source
为两个图像之一。
我不适合 vb.net,但在 c# 中你可以使用类似的东西
public ImageSource GetImageSourceFromImage(Bitmap pngFile)
{
MemoryStream imageStream = new MemoryStream();
pngFile.Save(imageStream, ImageFormat.Png);
imageStream.Seek(0, SeekOrigin.Begin);
return BitmapFrame.Create(imageStream);
}
此功能为您提供了一个图像源,您可以将其分配给您的图像对象。