关于bitmapimage:C#用uri改变图片框的来源

C# changing the source of an image box with uri

我几乎写了一段代码,它根据随机的 int 值选择要在图像框中加载的图像。
我将所有图像存储在我的解决方案资源管理器中名为"projectImages"的地图中。
我得到的错误是"System.dll 中发生了"System.UriFormatException"类型的未处理异常"
"附加信息:无效的 URI"。这可能意味着我没有正确连接链接。

提前致谢。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
    {
       int[] ImageValues = new int[15];
       ImageValues[0] = 1;
       ImageValues[1] = 2;
       ImageValues[2] = 3;
       ImageValues[3] = 4;
       ImageValues[4] = 5;
       ImageValues[5] = 6;
       ImageValues[6] = 7;
       ImageValues[7] = 8;
       ImageValues[8] = 9;
       ImageValues[9] = 10;
       ImageValues[10] = 11;
       ImageValues[11] = 12;
       ImageValues[12] = 13;
       ImageValues[13] = 14;
       ImageValues[14] = 15;

       Random randomize = new Random();
       int initialValue = randomize.Next(1, 16);
       int finalValue = ImageValues[initialValue];

       if(finalValue == 1)
       {
           leftImagebox.Source = new BitmapImage(new Uri(@"projectImages\\triangle.png"));
           midImagebox.Source = new BitmapImage(new Uri(@"projectImages\\circle.png"));
           rightImagebox.Source = new BitmapImage(new Uri(@"projectImages\\square.png"));
           question.Content ="Kan jij de driehoek aanwijzen?";
       }

       else if(finalValue == 2)
       {
           leftImagebox.Source = new BitmapImage(new Uri(@"projectImages\\middelstestaaf.png"));
           midImagebox.Source = new BitmapImage(new Uri(@"projectImages\\kortestaaf.png"));
           rightImagebox.Source = new BitmapImage(new Uri(@"projectImages\\langestaaf.png"));
           question.Content ="Kan jij de langste staaf aanwijzen?";
       }

       else if (finalValue == 3)
       {
           leftImagebox.Source = new BitmapImage(new Uri(@"projectImages\\triangle.png"));
           midImagebox.Source = new BitmapImage(new Uri(@"projectImages\\circle.png"));
           rightImagebox.Source = new BitmapImage(new Uri(@"projectImages\\square.png");
           question.Content ="Kan jij de cirkel aanwijzen?";
       }

你是否确定你已经在你的项目中引用了图片资源并且路径是正确的,如果是的话,试试
new Uri(@"YourPath", UriKind.RelativeOrAbsolute).

如果你使用WPF或Silverlight,我强烈建议你在你的项目中使用Pack Uri,这里是关于pack uri的官方文档。

那么 Uri 应该是这样的:

new Uri(@"ms-appx:///,,,:YourPath/projectImages/triangle.png")