XAML .Net Maui图像BaseSize混乱

f3temu5u  于 2023-09-28  发布在  .NET
关注(0)|答案(2)|浏览(146)

我所阅读的所有MAui文档的理解表明--如果您在应用程序中使用SVG图像文件
1.项目中SVG文件的实际大小基本上无关紧要
1.您应该手动编辑csproj文件,并确保将BaseSize属性添加到SVG文件的MauiImage Include=“Resources\Images\条目中。

  1. BaseSize属性的格式为W,H,宽度和高度值都必须能被8整除。
    1.此外,BaseSize属性的值应为图像的1级比例。我对这个的理解是--你放在xamarin表单可绘制文件夹中的图像的大小,或者你添加到iOS资产目录中的图像的大小,文件名中没有@2,@3。
    所以我就这么做了。现在我不明白毛伊岛是如何让我的形象。我试过的设置是220,56和180,48。我试过64 x64。这些尺寸似乎都不会对图像的大小产生任何影响。在每次测试之间,我都会清理解决方案并从Android模拟器中删除应用程序。
    使用如下所示的220,56,我得到了如下图所示的:
<MauiImage Include="Resources\Images\gbsheader.svg" BaseSize="220,56">
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </MauiImage>

使用180,48如下所示,我得到下面的图像:

<MauiImage Include="Resources\Images\gbsheader.svg" BaseSize="180,48">
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </MauiImage>

因此,为了好玩,我将基础大小设置为64,64,如下所示,并得到以下结果:

<MauiImage Include="Resources\Images\gbsheader.svg" BaseSize="64,64">
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </MauiImage>

这三个结果在我看来完全一样。有人知道我可能做错了什么吗?下面是包含图像定义的XAML。

x:Class="GBarScene_Maui.PageHeader">
<ContentView.Content>
    <Grid>
        <Grid.ColumnDefinitions>
            <ColumnDefinition Width="32"/>
            <ColumnDefinition Width="*"/>
            <ColumnDefinition Width="32"/>
        </Grid.ColumnDefinitions>
        <Image x:Name="imgMenu" Source="hamburgericon.png" HorizontalOptions="Center" VerticalOptions="Center" Grid.Column="0">
            <Image.GestureRecognizers>
                <TapGestureRecognizer Tapped="btnMenu_Tapped" NumberOfTapsRequired="1" />
            </Image.GestureRecognizers>
        </Image>
        <Image x:Name="imgHeader" Source="gbsheader.png" HorizontalOptions="Center" VerticalOptions="Center" Grid.Column="1" />
    </Grid>
</ContentView.Content>
piztneat

piztneat1#

所以张丽云贴出的答案对我不起作用。我读过的文档中没有一个声明Resize=“true”是必需的。我所读到的大多数内容都表明Resize=“true”是默认值。无论如何,在我的情况下-我更新了csproj文件如下-首先包括所有的图像文件,然后更新它们的基本大小等。我通过创建一个基本Maui项目并查看那里的csproj文件的图像来找到这个解决方案。我保留了Resize=“true”作为一个很好的衡量标准。不知道为什么这种方法有效而另一种方法无效--但现在这种方法有效了。

<MauiImage Include="Resources\Images\*" />
    <MauiImage Update="Resources\Images\hamburgericon.svg" BaseSize="64,64" Resize="true">
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </MauiImage>
    <MauiImage Update="Resources\Images\cocktail.svg" BaseSize="24,24" Resize="true">
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </MauiImage>
    <MauiImage Update="Resources\Images\gbsheader.svg" BaseSize="220,56" Resize="true">
      <CopyToOutputDirectory>Never</CopyToOutputDirectory>
    </MauiImage>

希望这对你有帮助。

r1wp621o

r1wp621o2#

您可以在.net maui中查看有关调整图像大小的官方文档。

更新:

我又测试了一遍。Resize="true"不是必需的。只是按照maui项目模板来改变基础大小,它的工作。

<MauiImage Include="Resources\Images\*" />
<MauiImage Update="Resources\Images\dotnet_bot.svg" BaseSize="128,128">

我不知道为什么我在Android上测试它不工作没有Resize=“true”.

相关问题