在WPF应用程序中加载图像

时间:2010-06-16 16:09:46

标签: c# wpf image

我不熟悉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”用于引用程序集。 (我猜答案的问题是缺少权威部分)

1 个答案:

答案 0 :(得分:2)

以下作品:

new BitmapImage(new Uri("/MyProject;component/Resources/next.png", UriKind.Relative));

只需将“MyProject”替换为项目名称,然后调整图像的路径即可。

确保将图像添加到项目中,并将“BuildAction”设置为“Resource”。