【发布时间】:2026-01-27 14:55:01
【问题描述】:
我有一个 WPF 登录屏幕,我想将启动图像动态加载到其中。大多数情况下,图像加载正常,但可能有十分之一的图像显示已损坏,如下所示。
在 XAML 中,我有一个简单的图像控件。
<Image x:Name="imgLogonSplash" Stretch="None" Width="800" Height="489"/>
我通过绑定在我的视图模型中执行此操作,但为了简单起见,我现在在我的代码中添加了这一行。
imgLogonSplash.Source = new BitmapImage(new Uri($"pack://application:,,,/Company.myapp;component/{splashImagepath}"));
上面的 SplashImagePath 提供了要加载的图像的名称。这些图像是主程序集中的 .png 文件,并标记为“资源”。
我尝试了几种加载图像的方法,包括在下面的视图模型中。谁能解释为什么这不能正常工作?
BitmapImage image = new BitmapImage();
image.BeginInit();
string imageUri = $"pack://application:,,,/Company.myapp;component/{splashImagePath}";
image.UriSource = new Uri(imageUri, UriKind.Absolute);
image.EndInit();
return image;
【问题讨论】:
-
可能是时间问题。如果你在 await.task.delay(200); 中设置任何源异步并敲击设置源后,问题就消失了吗?
-
我试试安迪
-
这就是我正在做的@Clemens。最上面的例子是我当前的代码。底部是我尝试过的其他代码的示例,结果相同。
-
图片是否多次加载? (使用断点检查。)图像文件是否被其他应用程序使用 - VS 或图像编辑器或应用程序的先前挂起实例?
-
@BentTranberg 这不是图像文件,而是程序集资源。
标签: c# wpf imagesource