我正在为通用Windows平台编写一个应用程序,我需要在其中加载一些图像以显示在列表中。现在我的问题是,对于用户而言,这种加载花费的时间太长了。目前XAML
,我使用绑定在中设置图片的来源,如下所示:{Binding Image}
。
我只能访问全分辨率图像,所以我想知道是否有一种方法可以将这些图像缩小后再将它们放置在UI上,因此只有较小的图像需要保留在内存中。有没有一种方法可以配置Image
UI元素,使其自行执行大小调整?
另外,有没有一种方法可以延迟加载这些图像,因为现在我的UI被这些图像的加载所阻塞。
编辑:我用来将本地图像加载到我的代码中Image
(这是在里面ListView.ItemTemplate
):
<Image
Grid.Row="0"
Source="{Binding Image}"
Stretch="Uniform"
VerticalAlignment="Center"/>
您可以使用转换器延迟加载图像并调整图像大小。In是您可以使用的转换器的开始。这样,您就可以完成延迟加载。我还没有准备好调整大小的示例。
转换器代码
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- bitmaptransform?forum = winappswithcsharp
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句