【问题标题】:ms-appx not working for image in uwp assets folderms-appx 不适用于 uwp 资产文件夹中的图像
【发布时间】:2017-12-29 19:22:25
【问题描述】:

我在这个问题上遇到了一段时间,我在网上找到的所有似乎都是相同代码的一个小变体,涉及带有 ms-appx 方案或 baseURI 的 URI。但是似乎没有任何效果。

基本上我有一个包含多个页面的 UWP 应用。当我导航到其中一个页面时,我想将应用程序的资产文件夹中的图像添加到此页面上的画布中。当我在 XAML 中执行此操作时,可以毫无困难地添加图形。

<Grid Name="basicGrid" >
    <Grid.Background>
        <ImageBrush ImageSource="/Assets/kamelenrace_background.png"
                    Stretch="UniformToFill"/>
    </Grid.Background>
    <Canvas Name="GameCanvas">
        <Image Source="\Assets\kameel1.png"/>
    </Canvas>
</Grid>

当我尝试在 C# 代码中添加图形时,没有任何效果(我尝试过一个示例)

 private Image player1 = new Image();
    private Image player2 = new Image();
    private bool singlePlayMode;

    public CamelRacePage()
    {
        this.InitializeComponent();

        BitmapImage p1 = new BitmapImage(new Uri("ms-appx:///Assets//kameel1.png"));
        player1.Source = p1;
        Canvas.SetLeft(player1, GameCanvas.Width / 2);
        Canvas.SetTop(player1, GameCanvas.Width / 2);
        GameCanvas.Children.Add(player1);

    }

虽然我现在可以使用 XAML 使其工作,但我真的很想了解为什么 C# 代码不能工作。我还在学习中……

任何帮助将不胜感激......

【问题讨论】:

  • 欢迎来到 Stack Overflow!当您说“没有任何效果”时,您的意思是图像不存在,还是出现错误?
  • 图片不存在。没有错误现在还发现,当我使用 Xaml 添加图像时,图像会显示在设计器中,但在运行应用程序时不可见。
  • 所以我在重建解决方案后让 XAML 代码正常工作。但 C# 代码选项仍然不起作用。

标签: c# xaml uwp


【解决方案1】:

我真的很想了解为什么 C# 代码不起作用

该问题是由代码 sn-p 设置的 Canvas.LeftCanvas.Top 值不正确引起的。由于您没有为GameCanvas 设置HeightWidth 值,因此您将无法获得GameCanvas.Width 值。如果你调试代码sn -p你会发现值是NaN,所以Canvas.LeftCanvas.Top的值是NaN,你看不到Image

您可以删除代码 sn-p 将起作用的两个代码行。或者,如果您想获得GameCanvas 的实际Width,您应该获得ActualWidth 属性。例如:

Canvas.SetLeft(player1, GameCanvas.ActualWidth / 2);
Canvas.SetTop(player1, GameCanvas.ActualHeight / 2);
GameCanvas.Children.Add(player1);

顺便说一句,使用XAML设置样式和布局会更好。

【讨论】:

  • 谢谢! (实际)宽度确实是问题所在。我最初更喜欢代码,因为我认为我可以轻松更改要添加的对象的数量并更改某些属性以适应屏幕大小和其他一些功能的变化。我猜你会建议在 Xaml 中绑定来更改属性?这样做的确切优势是什么?
  • @ljanssen,你可以搜索一下 MVVM,为什么这种设计模式会占优势。
猜你喜欢
  • 2023-03-07
  • 2015-02-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多