背景图像在 Xamarin 应用程序中被挤压

Background image getting squeezed in Xamarin app

我的 Xamarin Forms 5 应用程序的登录页面上有一个背景图片。

我希望这张图片占据整个背景但不要被挤压,这样我可以保持其原始比例。否则,图像会失真。目前,它占据了整个页面,但它在垂直方向上被挤压了。如何确保图像保持其原始纵横比而不被挤压?

这是我在此页面上的 XAML 代码:

<Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="400" />
            <RowDefinition Height="200" />
        </Grid.RowDefinitions>

        <!-- Logo -->
        <Image Grid.Row="0"
               Source="my_background_image.png"
               HorizontalOptions="FillAndExpand"
               VerticalOptions="FillAndExpand"
               HeightRequest="150"/>

        <!-- Sign In Button -->
        <StackLayout Grid.Row="1" Padding="10,0,10,0" VerticalOptions="Center">
            <Button VerticalOptions="Center" Text="Sign In  /  Sign Up" Clicked="Login_Tapped"/>
        </StackLayout>
    </Grid>

不知您是否设置了ContentPage的属性名为BackgroundImageSource的背景图片。我试过这个,图片显示很好。

如果您已经尝试过了,但没有得到满意的效果,您可以在 Grid 中添加一个 Image 视图作为背景。

<Grid>
    <Grid.RowDefinitions>
        <RowDefinition Height="400" />
        <RowDefinition Height="200" />
    </Grid.RowDefinitions>
    <Image
        Grid.RowSpan="3"
        Aspect="AspectFill"
        Source="background.jpg" />
    <!-- Logo -->
    <Image Grid.Row="0"
           Source="my_background_image.jpg"
           HorizontalOptions="FillAndExpand"
           VerticalOptions="FillAndExpand"
           HeightRequest="150"/>

    <!-- Sign In Button -->
    <StackLayout Grid.Row="1" Padding="10,0,10,0" VerticalOptions="Center">
        <Button VerticalOptions="Center" Text="Sign In  /  Sign Up" Clicked="Login_Tapped"/>
    </StackLayout>
</Grid>

如果你的图片宽高比太大,可以将Aspect="AspectFill"改为Aspect="AspectFit"。