C# 窗口背景图像使进程内存使用量增加了三倍

C# 窗口背景图像使进程内存使用量增加了三倍,c#,.net,wpf,C#,.net,Wpf,曾经使用winforms,最近开始学习wpf。 对于我的主菜单窗口和一些选择性窗口,我使用自定义图像作为窗口背景 <Window.Background> <ImageBrush ImageSource="/Views/1295.jpg" Stretch="UniformToFill"/> </Window.Background> 图像只有760kb,但只要运行我的应用程序并加载第一个只包含5个按钮的窗口,它

曾经使用winforms,最近开始学习wpf。 对于我的主菜单窗口和一些选择性窗口,我使用自定义图像作为窗口背景

<Window.Background>
    <ImageBrush ImageSource="/Views/1295.jpg" Stretch="UniformToFill"/>
</Window.Background>

图像只有760kb,但只要运行我的应用程序并加载第一个只包含5个按钮的窗口,它就从不使用背景图像时的100MB进程内存增加到了使用背景图像时的350MB

我该如何解决这个问题,还是没有办法解决?
我的winform应用程序与类似的布局仅使用30MB,wpf应该有这么大吗?

如果您多次使用同一图片,您可以更好地将其声明为这样的资源

<Window.Resources>
    <ImageBrush x:Key="imageBrush" ImageSource="/Views/1295.jpg" Stretch="UniformToFill"/>
</Window.Resources>

然后将背景属性设置为此资源

<Button Content="Click me" Background="{DynamicResource imageBrush}"/>


您的进程内存仍将增加,但不会增加相同的数量,因为图像只加载一次。

如果您多次使用同一图片,您可以更好地将其声明为这样的资源

<Window.Resources>
    <ImageBrush x:Key="imageBrush" ImageSource="/Views/1295.jpg" Stretch="UniformToFill"/>
</Window.Resources>

然后将背景属性设置为此资源

<Button Content="Click me" Background="{DynamicResource imageBrush}"/>


您的进程内存仍将增加,但不会增加相同的数量,因为映像只加载一次。

wpf应用程序往往非常需要内存。背景图片质量是否重要?您可以尝试RenderOptions.BitmapScalingMode=“LowQuality”如果只是为了看起来漂亮,您可以选择使用各种渐变笔刷,这些笔刷可以在图层中。还有基于向量的形状。例如,徽标通常由一条路径表示,路径上的几何图形定义了徽标所在的位置。几何图形/路径的部分不必是连续的。您可以使用inkscape将位图“跟踪”到几何图形中。wpf应用程序往往非常需要内存。背景图片质量是否重要?您可以尝试RenderOptions.BitmapScalingMode=“LowQuality”如果只是为了看起来漂亮,您可以选择使用各种渐变笔刷,这些笔刷可以在图层中。还有基于向量的形状。例如,徽标通常由一条路径表示,路径上的几何图形定义了徽标所在的位置。几何图形/路径的部分不必是连续的。您可以使用inkscape将位图“跟踪”成几何图形。这通常是WPF中资源的正确方法,+1不幸的是,我将每个图片用于单独的视图一次,thnx!对于WPF中的资源,这通常是正确的方法,+1不幸的是,我在单独的视图中使用每个图片一次,thnx!