Wpf 如何在加载图像时获得黑色背景?
下面是一个极其简单的应用程序,它加载一个黑色背景的窗口Wpf 如何在加载图像时获得黑色背景?,wpf,xaml,Wpf,Xaml,下面是一个极其简单的应用程序,它加载一个黑色背景的窗口 <Window x:Class="MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" Width="1365" Height="768" WindowStart
<Window x:Class="MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Width="1365" Height="768"
WindowStartupLocation="CenterScreen"
Background="Black">
</Window>
效果很好,但如果我添加一个图像控件,我希望它在加载图像之前显示黑色一秒钟
<Image Source="pack://application:,,,/assets/images/bg.jpg" />
但由于某种原因,背景显示为白色。图像在加载后显示得非常好,但我希望加载的1秒钟是黑色,而不是白色
如何在加载图像时显示黑色背景???我试图从背景加载图像,但没有成功。我试图加载图像,并使用动画从0到大的动画,但这并没有真正的工作,你将不得不使用一个固定的宽度。最后,我想我应该使用一个脚本来改变可见性,该脚本在
Image.Loaded
事件被触发时被触发
在工作解决方案中,图像加载事件触发后0.1秒,保存图像的网格的可见性将从折叠变为可见。您可以通过将“MG”网格的默认可见性更改为“隐藏”或“可见”来证明这一点,并注意到窗口的白色持续时间比其设置为折叠时长
工作XAML
看得见的
注意:您可能需要根据正在渲染的图像的文件大小来调整计时。令人惊讶的是,如此简单的想法需要在WPF中付出如此多的努力。我曾考虑过在加载时使用事件触发器,但它对我不起作用,因为我将Visibly设置为“隐藏”而不是“折叠”。谢谢你提供了一个有效的例子。@Karmacon我刚刚读完动画,所以这是一个“冲动”的回答。我想你也可以在代码背后做类似的事情。作为一个新手,我真的能理解为什么WinForms仍然如此流行。
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Test"
mc:Ignorable="d"
Title="MainWindow"
Height="350"
Width="525"
Background="Black">
<Grid x:Name="MG" Background="Black" Visibility="Collapsed">
<Image Source="pack://application:,,,/assets/images/bg.jpg">
<Image.Triggers>
<EventTrigger RoutedEvent="Loaded">
<EventTrigger.Actions>
<BeginStoryboard>
<Storyboard>
<ObjectAnimationUsingKeyFrames Duration="0:0:0.1"
Storyboard.TargetName="MG"
Storyboard.TargetProperty="Visibility">
<ObjectAnimationUsingKeyFrames.KeyFrames>
<DiscreteObjectKeyFrame>
<DiscreteObjectKeyFrame.Value>
<Visibility>Visible</Visibility>
</DiscreteObjectKeyFrame.Value>
</DiscreteObjectKeyFrame>
</ObjectAnimationUsingKeyFrames.KeyFrames>
</ObjectAnimationUsingKeyFrames>
</Storyboard>
</BeginStoryboard>
</EventTrigger.Actions>
</EventTrigger>
</Image.Triggers>
</Image>
</Grid>
</Window>