如何使图像显示在Xamarin.Forms应用程序的UWP版本中

问题描述

我有一个像这样的简单Xaml:

...
    <ContentPage.Content>
        <Grid Padding="0,40,0">
            <Grid.ColumnDeFinitions>
                <ColumnDeFinition Width="*"/>
            </Grid.ColumnDeFinitions>
            <Grid.RowDeFinitions>
                <RowDeFinition Height="Auto"/>
            </Grid.RowDeFinitions>

            <Image  Grid.Row ="0" Source="iMobile"
                        HorizontalOptions="CenterandExpand"
                        WidthRequest="260" HeightRequest="129"/>
        </Grid>
    </ContentPage.Content>

图像iMobile显示Androidios上。对于Android,在单独的可绘制文件夹中,图像的大小不同。对于ios,我在Assets目录中具有不同大小的图像。

我曾尝试对UWP做同样的事情,但似乎无济于事。这是我尝试做的一些事情:

  • 我已将图像添加到UWP项目的根目录中,但这不起作用。

  • 我将图像添加到了Assets目录,但这没有用。

  • 我尝试将.scale-100.scale-200.scale-400添加到图像文件名称(将它们分别尝试过),但这没有用。

  • 我还尝试将图像放在名为 scale-100 的目录中,但这也不起作用。

有什么想法可能导致我的问题以及如何解决此问题?一件如此琐碎的事情花了我很多时间,真是令人沮丧。

更新: 我尝试使用URL代替iMobile作为源,这对UWP也不起作用,但对Android却有效,请知道为什么会这样?

解决方法

如何使图像显示在Xamarin.Forms应用程序的UWP版本中

请参阅Images in Xamarin.Forms正式文件。 Xamarin表单支持Native resolutions

UWP图像文件名可以在文件扩展名前添加.scale-xxx后缀,其中xxx是应用于资产的缩放比例,例如myimage.scale-200.png。然后可以在不使用scale修饰符的代码或XAML中引用图像,例如只是myimage.png。该平台将根据显示器的当前DPI选择最接近的合适资产规模。

如果将图像文件放置在UWP Assets文件夹中,则可以使用以下xaml,并且请注意,默认的空白xamarin应用iamge文件的颜色为白色,我们需要设置黑色背景以突出显示它们。

<Grid BackgroundColor="Black">
    <Image>
        <Image.Source>
            <OnPlatform x:TypeArguments="FileImageSource">
                <On Platform="UWP" Value="Assets/LargeTile.png" />
                <On Platform="iOS" Value="LargeTile.png" />
                <On Platform="Android" Value="LargeTile.png" />
            </OnPlatform>
        </Image.Source>
    </Image>
</Grid>