我不熟悉WPF,我感到很困惑。
我正在尝试创建一个小型电脑游戏,并且有一些我想要动态显示的元素。我使用Image类并将图像添加到画布。但我不确定这是不是一个好习惯。我觉得在画布上添加控件似乎有点连线。而且我对性能有点担心,因为我可能需要很多图像。
真正的问题是,我无法加载图像文件中的图像。我在这样的教科书(XMAL)中看到了一个例子:
<Image Panel.ZIndex="0" Margin="0,0,0,0" Name ="image1">
<Image.Source>
<BitmapImage UriSource="Bell.gif" />
</Image.Source>
</Image>
将Bell.gif添加到项目中。
我试图在代码中复制它以创建图像。
new Image { Source = new BitmapImage(new Uri("Blockade.bmp"))}
但是我得到了无效的Uri异常。在互联网上进行一些搜索后,我发现动态加载资源似乎很困难。我可以动态加载添加到项目中的文件吗?
如果我使用绝对路径,那就没关系。但我不能指望每台计算机都会将文件放在同一个位置。我可以使用相对路径吗?
我试过
new Image { Source = new BitmapImage(new Uri(@"Pictures\Blank Land.bmp", UriKind.Relative)) }
但它不起作用。 (图像为空白)
感谢。
我删除了代码。我刚刚在MSDN中找到了“WPF中的包URI”中的解决方案。 我可以对本地程序集中的资源使用“pack:// application:,,, / Blockade.bmp”(绝对)或“/Blockade.bmp”(相对)。 (我最初没有使用'/') “pack:// application:,,, / ReferencedAssembly; component / File.xaml”用于引用程序集。 (我猜答案的问题是缺少权威部分)
答案 0 :(得分:2)
以下作品:
new BitmapImage(new Uri("/MyProject;component/Resources/next.png", UriKind.Relative));
只需将“MyProject”替换为项目名称,然后调整图像的路径即可。
确保将图像添加到项目中,并将“BuildAction”设置为“Resource”。