位图图像(BitmapImage)与图像刷(ImageBrush)的性能表现

5

我试过搜索但无法找到这个问题的答案:使用ImageBrush填充矩形是否比创建BitmapImage并设置其源属性有性能改进?

我需要呈现大量图像(我们正在尝试超过5000),目前我是这样创建它们的:

<Image x:Name="img" RenderOptions.BitmapScalingMode="LowQuality"
    Source="{Binding Path, Converter={StaticResource StringToImageConverter}, ConverterParameter={StaticResource string}}" >
</ext:IdImage>

在转换器中:
System.Windows.Media.Imaging.BitmapImage image = new System.Windows.Media.Imaging.BitmapImage();
image.BeginInit();
image.UriSource = new Uri(value as String);
image.DecodePixelWidth = int.Parse((String)parameter);
image.CacheOption = System.Windows.Media.Imaging.BitmapCacheOption.OnLoad;
image.EndInit();
return image;

注意:我必须使用转换器来设置DecodePixelWidth属性。

使用ImageBrush,我可以冻结画刷,从而根据我所读取的内容提高性能,所以我在想是否应该改变构建图像的方式。

附注:这些图像不是静态的,而是被平移。


渲染图像时速度慢?无论是使用BitmapImage还是ImageBrush都很慢? - daniele3004
欢迎来到StackOverflow!请参阅“问题标题应该包含“标签”吗?”,共识是“不应该”。 - user57508
为什么不自己实现一个性能基准测试呢?只是说一下... - user57508
1个回答

0

我认为问题不在代码中,而是在WPF架构中。

如果你的问题是性能方面的,根据我的个人经验,开发XAML需要电脑最好配备专用显卡。然而,很多时候即使在非常老旧的Windows XP电脑上,为了优化程序,我也会安装更新的Direct X库。

http://support.microsoft.com/kb/179113/en

XAML基于DirectX

试一下,然后告诉我


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接