首页
学习
活动
专区
圈层
工具
发布

WPF性能
EN

Stack Overflow用户
提问于 2010-07-09 15:22:56
回答 2查看 290关注 0票数 3

我正在构建一个简单的相册应用程序,在一个列表框中显示图像。xaml是:

代码语言:javascript
复制
<ListBox x:Name="imageList" Margin="10,10" ItemsSource="{Binding}" Height="500">
        <ListBox.ItemTemplate>
            <DataTemplate>
                <StackPanel Orientation="Horizontal">
                    <TextBlock Text="{Binding}" HorizontalAlignment="Left"></TextBlock>
                    <Image Source="{Binding}" Width="100" Height="100" HorizontalAlignment="Center"></Image>
                </StackPanel>
            </DataTemplate>
        </ListBox.ItemTemplate>
    </ListBox>

这里设置的DataContext是JPEG图像文件路径的string[]。

当我使用总大小为11MB的10-11图像时,总内存使用量将达到500MB!我真的很惊讶,因为这只是一个简单的照片查看应用程序,没有其他功能。运行这个应用程序会让我的机器变得非常不可用。

我在Vista上使用的是VS2010 express,.NET 4。谁能解释一下在后台发生了什么,这需要如此巨大的内存占用?可以做什么来优化它?

提前谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-07-09 15:27:20

这里的一个关键可能是虚拟化...

另一个关键字可能是BitmapImage的decodepixelwidth字段

因此,通过转换器绑定您的图像,以返回内存较少的图像的解码变体……

http://msdn.microsoft.com/en-us/library/system.windows.media.imaging.bitmapimage.decodepixelwidth.aspx

你也可以给Dispose of Image in WPF in Listbox (memory leak)一个机会!

票数 2
EN

Stack Overflow用户

发布于 2010-07-09 16:16:18

不要忘记,当您加载压缩图像( JPEG可能非常压缩)时,加载后保存它所需的内存几乎总是基于其未压缩状态。

因此,先查看文件大小,然后再考虑内存-您应该查看图像像素大小-从长度x宽度x 4作为粗略的经验法则-然后重新考虑内存使用是否如此惊人,这可能是非常具有误导性的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3210589

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档