使用ScrollViewer从中心组织缩放和平移图像在UWP中不起作用



我的要求是,我想通过使用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="AssetsEditedImage.jpg" />
</Grid>
</ScrollViewer>
</ContentControl>

[C#]

int count = 1;
private void Btn_Click(object sender, RoutedEventArgs e)
{
count += 1;
scrollViewer.ZoomToFactor(count);            
}

问题1:图像从左上角位置缩放。但应该从图像的中心放大。

问题2:放大后,如果你用手指水平平移,它会重置到以前的位置。

此外,我在上面的代码中尝试了RenderTransformOrigin作为(0.5,0.5(到Grid和Image。这也失败了。

示例链接:

任何一个,请指导我上面的代码有什么问题。

问候,

巴拉蒂。

使用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="AssetsEditedImage.jpg" Stretch="Uniform" RenderTransformOrigin="0.5, 0.5" />
</Grid>
</ScrollViewer>
</UserControl>

最新更新