2011-08-29 132 views
1

添加DropShadowEffect時,使用ScaleTransform放大需要大量內存。內存太多!沒有DropShaddowEffect,沒有問題。如何在使用DropShadowEffect時避免OutOfMemoryException?

我不明白,爲什麼它泄漏內存,我可以做些什麼來解決。

下面是一個簡單的測試程序的代碼:

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; 
+0

你有多少內存? WPF和Silverlight沒有聲稱對內存友好。 – ChaosPandion

+0

32位系統,所以...約3的東西。但是,第一WPF沒有這個問題,第二:我的瀏覽器的內存從150k增加到超過1000k,更多隻是使用DropShadowEffect ....這是不能接受的。 – Em1

+1

使用大量內存!=泄漏內存。只是說... – rtalbot

回答

相關問題