我如何避免一个OutOfMemoryException时使用dropshadoweeffect
本文关键字:OutOfMemoryException dropshadoweeffect 一个 何避免 | 更新日期: 2023-09-27 18:06:51
当添加dropshadowweeffect时,使用ScaleTransform放大需要大量内存。内存太多!没有dropshaddowef效果,没有问题。
我不明白,为什么它会泄漏内存,我能做些什么来解决。
下面是一个简单测试程序的代码:XAML
<Grid>
<Grid.RowDefinitions>
<RowDefinition />
<RowDefinition Height="20"/>
</Grid.RowDefinitions>
<Canvas x:Name="canvas" Height="100" Width="100"
Background="Beige" Grid.Row="0">
<Canvas.RenderTransform>
<ScaleTransform ScaleX="{Binding ElementName=slide, Path=Value}"
ScaleY="{Binding ElementName=slide, Path=Value}" />
</Canvas.RenderTransform>
</Canvas>
<Grid Grid.Row="1">
<Slider x:Name="slide" Minimum="1" Maximum="200"/>
</Grid>
</Grid>
后台代码:var dropShadowEffect = new DropShadowEffect();
canvas.Effect = dropShadowEffect;
你应该看看这个博客:http://youpvp.com/blog/post/What-you-need-to-know-about-DropShadow-to-create-great-Silverlight-applications.aspx
你看到的大部分内存使用情况都符合预期。500x500像素画布的阴影(在您的情况下是5倍缩放)将占用>1MB内存。
这是。net 3.5还是4.0?在3.5版本中,应该避免投影效果,以避免渲染问题。
http://joshsmithonwpf.wordpress.com/2007/07/24/a-lightweight-alternative-to-dropshadowbitmapeffect/