我ScrollViewer
在我的 Windows Phone 8.1 (WinRT) 应用程序中苦苦挣扎。基本上,我想要实现的是使用 检索图像FileOpenPicker
,将图像裁剪为固定比例(正方形)格式,同时让用户选择图像的一部分和缩放级别,然后在我的应用程序中使用该图像. 完美的功能就像“人物”应用程序中的功能,您可以在其中将图像添加到联系人,但如果我能以某种方式让它工作而 ScrollView 行为太不规律,我会接受更少。
这是我尝试过的一种变体:
<ScrollViewer x:Name="SelectedImageScrollViewer"
ZoomMode="Enabled"
HorizontalScrollBarVisibility="Auto"
VerticalScrollBarVisibility="Auto"
Height="300"
Width="300" >
<Image x:Name="SelectedImage"
Source="{Binding SelectedImage}"
MinHeight="300"
MinWidth="300" />
</ScrollViewer>
并在代码隐藏中(在构造函数中):
if (SelectedImage.ActualHeight > SelectedImage.ActualWidth) {
SelectedImage.Width = SelectedImageScrollViewer.ViewportWidth;
}
else {
SelectedImage.Height = SelectedImageScrollViewer.ViewportHeight;
}
就像我说的那样,这并没有真正起作用,并且存在几个问题:
ScrollView
s 内置了这种“橡皮筋”过度滚动功能。虽然我同意平台统一性,但在这里它没有帮助,并且提到的“人”应用程序也没有。- 当用户放大超出 时
MaxZoomLevel
,缩放不仅会停止,而且图像会漂移并在释放后快速恢复 - 这不是良好的用户体验。 - 可以使图像小于裁剪框。不能将缩放级别降低到图像未填充视口的程度。
ScrollView
不显示图像的中心。
我该如何解决这些问题,以及裁剪和缩放图像的最佳方法是什么?如果它可以作为 SDK 的一部分提供,就像在 Silverlight(照片选择器)中一样,那就太好了。