如何优化多个相同的图像
本文关键字:图像 何优化 优化 | 更新日期: 2023-09-27 18:25:42
我有一个表,许多行包含相同的图标<Image Source="{Binding Icon}" />
(有一组6个可能的图标)。我注意到,由于这些图标(它们似乎每次都会重新生成),刷新表需要花费大量时间。在我的程序中,表经常刷新——每3秒刷新一次。有没有办法优化它?也许可以将图标声明为资源,这样它只加载一次。
我建议确保每个视图模型只创建一次图标/图像(如果可能的话,我不喜欢使用静态变量)。您还应该在资源上调用Freeze()
以获得最大性能。
例如
public class MultipleIconsViewModel
{
private BitmapImage _icon;
public ImageSource Icon
{
get
{
if (_icon == null)
{
_icon = new BitmapImage(new Uri(@"..'images'myImage.png", UriKind.RelativeOrAbsolute));
// can't call Freeze() until DownloadCompleted event fires.
_icon.DownloadCompleted += (sender, args) => ((BitmapImage) sender).Freeze();
}
return _icon;
}
}
}
另请参阅本文:WPF图像资源其讨论了相同的问题。
Icon
属性在做什么?如果它每次都创建一个新的ImageSource
,这将解释性能差的原因。如果你的图标是共享的,你可以静态地公开它(作为一个单例)并使用它的一个实例