C#使用WPF显示JPG图像不起作用

时间:2014-05-27 18:06:03

标签: c# image xaml

对于一个项目,我必须显示没有数据绑定的JPG照片,并且不使用源进入XAML文件。为此,我想使用此功能:

private void updatephoto(string urlphoto)
{
   photo.Source = new BitmapImage(new Uri(String.Format("{0}", urlphoto), UriKind.Relative));
}

因为我的老师在他的例子中使用它,对他来说它有效! 我的班级是这样的(这是摘录):

class Recette
{
    public String photo { get; private set; }
}

使用允许相对路径的字符串的构造函数。使用相对路径在XAML文件中使用Source =“nameoffile.jpg”正常工作但在我的MainWindows.xaml.cs中我想用这个显示照片:

Recette selectedRecette;
void comboBox_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
   selectedRecette = (sender as ComboBox).SelectedItem as Recette;
   updatephoto(selectedRecette.photo);
}

最后一行称为:

     private void updatephoto(string urlphoto)
     {
         photo.Source = new BitmapImage(new Uri(String.Format("{0}", urlphoto), UriKind.Relative));
     }

在XAML中,图像为:

< Image Height="100" Name="photo" HorizontalAlignment="Center"/ >

所以我不明白为什么这不起作用

1 个答案:

答案 0 :(得分:0)

你说绝对的道路是有效的,这很棒!您的代码按预期正常

您始终可以使用绝对路径,声明:

String path = @"C:\Users\user\Documents\Visual Studio 2013\Projects\projetf - Copie\td6bis\flamby.jpg";

完全有效因为&#34; @&#34;符号。它表示整个字符串是字符串文字,所以&#39; \&#39;角色没有逃避任何事情。

如果你真的需要相对路径,那么路径可能不会指向您认为的路径。关键是所有相对路径都相对于可执行文件的工作目录。这通常是可执行文件所在的文件夹,但有些地方很奇怪。

关于相对路径的快速入门:

  1. 如果您的路径只是一个文件名(即&#34; test.jpg&#34;),则该文件需要位于执行目录中。

  2. 如果路径看起来像普通路径(即@&#34; Images \ test.jpg&#34;),那么它正在寻找名为&#34; Images&#34;在包含图像文件的执行目录中。

  3. 如果你有点,那么它会上升&#34; up&#34;目录树(即@&#34; .. \ Images \ test.jpg&#34;)。这会从执行目录中找到一个目录,查找名为&#34; Images&#34;的文件夹。并在那里查找图像文件。

  4. 完全随机的信息;声明String.Format({0}, "MySTring")"MySTring"的作用相同。如果只有一个参数,那么String.Format没有理由,并且该参数是整个字符串。