リストに表示するためにいくつかの画像をロードする必要があるユニバーサルWindowsプラットフォーム用のアプリを書いています。今私の問題は、この読み込みにユーザーにとって時間がかかりすぎることです。私は現在XAML
、次のようにバインディングを使用して、の画像のソースを設定しています{Binding Image}
。
私はフル解像度の画像にしかアクセスできないので、UIに配置する前にこれらの画像を小さくする方法があるかどうかを知りたいので、小さい画像だけをメモリに残す必要があります。Image
このサイズ変更自体を実行するようにUI要素を構成する方法はありますか?
また、これらの画像の読み込みによってUIがブロックされるため、これらの画像を遅延で読み込む方法はありますか。
編集:ローカル画像をロードするために使用しているコードImage
(これはの中にありますListView.ItemTemplate
):
<Image
Grid.Row="0"
Source="{Binding Image}"
Stretch="Uniform"
VerticalAlignment="Center"/>
コンバーターを使用して、画像の遅延読み込みとサイズ変更を行うことができます。で使用できるコンバーターの始まりです。これにより、遅延読み込みが自動的に行われます。ただし、サイズ変更の例は用意していません。
コンバーターコード
class LoadAttachmentAsyncConverter : IValueConverter
{
public override object Convert(object value, Type targetType, object parameter, string language)
{
Task<BitmapImage> taskToExecute = GetImage(<some parameter>);
//Possibly handle some other business logic
return new NotifyTaskCompletion<BitmapImage>(taskToExecute);
}
public async Task<BitmapImage> GetImage(object someParameter) {
BitmapImage image = new BitmapImage();
//do (async stuff) to fill the image;
return image;
}
}
XAMLコード
<Image Source="{Binding Result}" DataContext="{Binding converterObjValue, Converter={StaticResource ConverterName}}"/>
サイズ変更の実装については、https://social.msdn.microsoft.com/Forums/en-US/490b9c01-db4b-434f-8aff-d5c495e67e55/how-to-crop-an-image-using-を参照してください。ビットマップ変換?フォーラム= winappswithcsharp
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加