我正在创建一个照片查看应用程序,我想实现缩放图片.我创建了一个ScrollViewer并在那里放置了一个Image.这一切都是开箱即用的.我可以做一个缩放手势,它放大图片.现在,我想要实现的下一件事是在缩放手势开始时加载图片的高分辨率版本,并在加载时动态交换Image控件中的位图.我希望它无缝地发生,以便用户可以继续手势并继续放大并查看更详细的图片.实现这一目标的最佳方法是什么?这是我目前拥有的代码.我的代码的问题是,当替换Image.Source时,我的手势被中断,照片被重置为原始大小.更换ScrollViewer ZoomFactor没有帮助,因为它似乎在更换图像时被重置.我有一个带有Image属性的DataModel,它最初返回null但是在低分辨率模式下从'file'开始加载图片,并在加载完成时调用OnPropertyChanged("Image").调用LoadFullImage()加载完整分辨率版本并在完成时调用OnPropertyChanged("Image").
以下是DataModel.cs的摘录:
public async Task LoadFullImage()
{
loadFullImageTask = UpdateImage(0);
await loadFullImageTask;
}
public ImageSource Image
{
get
{
if (fullImage != null)
{
return fullImage;
}
else if (image != null)
{
return image;
}
else
{
Task loadImageTask = UpdateImage(768);
return null;
}
}
}
public bool FullImageLoading
{
get { return (this.loadFullImageTask != null) && (!this.loadFullImageTask.IsCompleted); }
}
public bool FullImageLoaded
{
get { return this.fullImage != null; }
}
Run Code Online (Sandbox Code Playgroud)
这是我的MainPage.xaml:
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<ScrollViewer x:Name="imageViewer" …Run Code Online (Sandbox Code Playgroud)