1

迅速に表示したい可変数の静的画像リソースがあるとします。

だから私は INotifyPropertyChanged クラスを持っています

for (blah)
    bitMaps.Add(new BitmapImage(new Uri(blah + i + ".png")));

画像を取得するためのリストとプロパティ

public ImageSource Image
{
    get
    {
        return bitMaps[Index];
    }
}

一緒に

public int Index
{
    set
    {
        _Index = value;
        OnPropertyChanged("Image");
    }
}

インデックスを変更することで表示される画像を変更できるようにします。

次に、それを表示するためのバインドされた Image タグ<Image Source="{Binding Image}" Stretch="None" />があります。

しかし、最初にビットマップ画像をロードしているように見えますが、Index を変更するときのトランジションがまだ初めてちらつき、BitmapImage が遅延ロードしていることに気付きます。これを行うためのより良い/よりパフォーマンスの高い方法はありますか? または、どうすれば画像を適切にプリロードできますか?

更新:すべてのイメージタグが作成され、非表示になっているユーザーコントロールを作成することになりました...

4

1 に答える 1

1

画像のソースを変更すると、常にちらつきが発生します。画像をプリロードしたい場合は、それらをビジュアル ツリーに配置できます。私の最初の推奨事項は、次のような FlipView を使用することです。

<FlipView ItemSource="{Binding Bitmaps}" SelectedIndex="{Binding Index}">
    <FlipView.ItemTemplate>
        <DataTemplate>
            <Image Source="{Binding}" />
        </DataTemplate>
    </FlipView.ItemTemplate>
</FlipView>

インデックスを変更すると、FlipView は、既にプリロードされている次/前の画像を表示します。

何百もの画像がある場合は、画像を循環する独自のカスタム コントロールを記述します。

ただし、いずれにしても、画像のソースを変更すると、古いビットマップを破棄してから新しいビットマップをレンダリングするまでの間にギャップが生じます。

于 2012-10-08T03:51:34.400 に答える