问题描述
我的要求是,我想使用scrollviewer ZoomToFactor方法以编程方式缩放图像。当使用ZoomToFactor方法应用缩放值时,它应该是从原点中心开始缩放。
因此,我已经在网格布局中添加了图像,并将其水平和垂直对齐方式设置为中心,然后在ScrollViewer中添加了网格,如下面的代码片段所示。
[XAML]
<ContentControl Grid.Row="2">
<ScrollViewer x:Name="scrollViewer" VerticalScrollMode="Enabled" HorizontalScrollMode="Enabled" ZoomMode="Enabled" >
<Grid VerticalAlignment="Center" HorizontalAlignment="Center" Width="216" Height="319">
<Image x:Name="MyImage" Source="Assets\EditedImage.jpg" />
</Grid>
</ScrollViewer>
</ContentControl>
[C#]
int count = 1;
private void Btn_Click(object sender,RoutedEventArgs e)
{
count += 1;
scrollViewer.ZoomToFactor(count);
}
问题1:图像从topLeft位置缩放。但是应该从图像的中心缩放。
问题2:放大后,如果使用手指水平平移,它将重置为先前的位置。
此外,我尝试将RenderTransformOrigin设置为上述代码中的Grid和Image的(0.5,0.5)。那也失败了。
任何人,请指导我上述代码有什么问题。
此致
巴拉提。
解决方法
使用ScrollViewer从中心起点缩放和平移图像在UWP中不起作用
我已经测试了上面的代码,该问题是由于您将ScrollViewer
放在ContentControl
中而导致ScrollViewer
的大小与子网格大小相同。您可以使用UserControl
进行替换。
<UserControl Grid.Row="2">
<ScrollViewer x:Name="scrollViewer" VerticalScrollMode="Enabled" HorizontalScrollMode="Enabled" ZoomMode="Enabled" >
<Grid VerticalAlignment="Center" HorizontalAlignment="Center" Width="216" Height="319" >
<Image x:Name="MyImage" Source="Assets\EditedImage.jpg" Stretch="Uniform" RenderTransformOrigin="0.5,0.5" />
</Grid>
</ScrollViewer>
</UserControl>