使用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="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)。那也失败了。

Sample link:

任何人,请指导我上述代码有什么问题。

此致

巴拉提。

解决方法

使用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>

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...