0

ScrollViewer が使用するメモリ キャッシュを少なくするために、電話アプリでプロパティまたは設定を設定する方法を誰かが知っているかどうか疑問に思っています。現在、画面に画像を表示するアプリを使用していますが、画面に近い、または画面と交差する画像のみが表示されるようにするアルゴリズムを使用しても、たまたまズームインするとメモリ不足になることがあります近くの画像の。

例として、以下の XAML は 300 MB のうち 125 MB を消費します。これは空白の白いキャンバスだけです。

<phone:PhoneApplicationPage
x:Class="DemoScroller.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
FontFamily="{StaticResource PhoneFontFamilyNormal}"
FontSize="{StaticResource PhoneFontSizeNormal}"
Foreground="{StaticResource PhoneForegroundBrush}"
SupportedOrientations="Portrait" Orientation="Portrait"
shell:SystemTray.IsVisible="True">

<!--LayoutRoot is the root grid where all page content is placed-->
<Grid x:Name="LayoutRoot" Background="Transparent">
    <Grid.RowDefinitions>
        <RowDefinition Height="Auto"/>
        <RowDefinition Height="*"/>
    </Grid.RowDefinitions>

    <!--TitlePanel contains the name of the application and page title-->
    <StackPanel x:Name="TitlePanel" Grid.Row="0" Margin="12,17,0,28">
        <TextBlock Text="MY APPLICATION" Style="{StaticResource PhoneTextNormalStyle}" Margin="12,0"/>
        <TextBlock Text="page name" Margin="9,-7,0,0" Style="{StaticResource PhoneTextTitle1Style}"/>
    </StackPanel>

    <!--ContentPanel - place additional content here-->
    <Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
        <ScrollViewer HorizontalScrollBarVisibility="Auto" VerticalScrollBarVisibility="Auto">
            <Canvas Width="2000" Height="8000">
                <Canvas Width="990" Height="1990" Background="White"/>
                <Canvas Width="990" Height="1990" Canvas.Left="1010" Background="White"/>
                <Canvas Width="990" Height="1990" Canvas.Top="2000" Background="White"/>
                <Canvas Width="990" Height="1990" Canvas.Left="1010" Canvas.Top="2000" Background="White"/>
                <Canvas Width="990" Height="1990" Canvas.Top="4000" Background="White"/>
                <Canvas Width="990" Height="1990" Canvas.Left="1010" Canvas.Top="4000" Background="White"/>
            </Canvas>
        </ScrollViewer>
    </Grid>
</Grid>

</phone:PhoneApplicationPage>

リストボックスなどを使用することはできません。これは、アプリで画像がうまく整列していないためです。

助言がありますか?ありがとう!トーマス

4

1 に答える 1

0

画像を非表示にしても、特に画像が大きい場合、多くのメモリを消費する非圧縮形式にデコードされます。

画像が見えなくなったときに画像を完全にアンロードする、より効率的な方法で画像を「仮想化」する必要があります。それが LongListSelector が提供できるものです。ScrollViewer はこれを行いません。

于 2013-03-29T07:19:55.490 に答える