C# 将图像居中放置在视口框中

C# 将图像居中放置在视口框中,c#,xaml,uwp,C#,Xaml,Uwp,使用XAML和UWP如何在视图框中垂直和水平居中放置图像?给定一个可变尺寸的图像,我需要将其缩放到容器的宽度,同时将其裁剪到特定的纵横比 我尝试将图像的宽度和高度设置为所需的纵横比,并将其包含在一个可视框中(如下图所示),该可视框工作正常,但图像与上/左对齐(不居中),保留所有一半,但不裁剪其他一半 <Viewbox> <Image Source="{Binding ImageUrl}" Width="16" Height="

使用XAML和UWP如何在
视图框中垂直和水平居中放置
图像
?给定一个可变尺寸的图像,我需要将其缩放到容器的宽度,同时将其裁剪到特定的纵横比

我尝试将图像的宽度和高度设置为所需的纵横比,并将其包含在一个可视框中(如下图所示),该可视框工作正常,但图像与上/左对齐(不居中),保留所有一半,但不裁剪其他一半

<Viewbox>
    <Image Source="{Binding ImageUrl}"
           Width="16"
           Height="9"
           Stretch="UniformToFill"
           HorizontalAlignment="Center"
           VerticalAlignment="Center"/>
</Viewbox>


有什么建议吗?

将图像居中放置在定义纵横比的容器中

<Viewbox>
    <Grid Width="16" Height="9">
        <Image Source="{Binding Path=ImageUrl}" Stretch="UniformToFill" VerticalAlignment="Center" HorizontalAlignment="Center"/>
    </Grid>
</Viewbox>

我终于想出了解决办法。感谢那些试图帮助解决这个问题的人

关键是在图像上设置
UseLayoutRounding=“False”
,并将其放置在容器中,如下所示

<Viewbox>
    <Grid Width="{Binding AspectWidth}"
          Height="{Binding AspectHeight}">
        <Image Source="{Binding ImageSource}" 
               HorizontalAlignment="Center"
               VerticalAlignment="Center"
               UseLayoutRounding="False"
               Stretch="UniformToFill"/>
    </Grid>
</Viewbox>


您也可以选择使用
边框
而不是
网格
作为容器。

您可以添加它的屏幕截图吗?请注意,
Stretch=“UniformToFill”
根据图像的自然纵横比切断图像的右侧或底部。此外,图像控件应该“填充”视图框,使其居中。水平对齐和垂直对齐在这里没有效果。我能想到的最好方法是在容器中放置一个容器,然后将一个容器居中到所需的尺寸,并用图像填充。人们可能认为这是可行的,但它会导致奇怪的对齐问题,尤其是在缩放时。不过我会+1。@OwenJames如果你能给出一个发生对齐问题的例子,我可以研究一下。正如你现在的问题,我对容器和周围环境(图像列表、大小、布局等)了解不够