String的ImageSource无法正常工作?

use*_*352 2 c# wpf image imagesource

我在项目的一个文件夹中有一堆*.tif图像..我还在我的visual studio项目中添加了一个位于"Templates\Team Logos"的文件夹中

现在如果我设置一个图像源来说:

<Image Name="UL_Team1_Image" Grid.Row="1" Grid.Column="1" Margin="5" Source="Team Logos\ARI.tif"></Image>
Run Code Online (Sandbox Code Playgroud)

这样可行.但是现在如果我尝试:

UL_ImageArr[a].Source = (ImageSource)new ImageSourceConverter().ConvertFromString("Team Logos\\ARI.tif");
Run Code Online (Sandbox Code Playgroud)

这不起作用.是什么赋予了?我得到一个NullReferenceException ...但它对我没有意义?

Ham*_*yan 6

您可以在代码隐藏中使用它,我认为它比使用它更快ImageSourceConverter.

BitmapImage bimage = new BitmapImage();
bimage.BeginInit();
bimage.UriSource = new Uri("Team Logos\\ARI.tif", UriKind.Relative);
bimage.EndInit();
UL_ImageArr[a].Source = bimage
Run Code Online (Sandbox Code Playgroud)

如果你想使用ImageSourceConverter你必须通过pack-uri参考图像文件:

var converter = new ImageSourceConverter();
UL_ImageArr[a].Source = 
         (ImageSource)converter.ConvertFromString("pack://application:,,,/Team Logos/ARI.tif");
Run Code Online (Sandbox Code Playgroud)


Cle*_*ens 5

在后面的代码中,您通常会编写完整的包 URI来引用图像资源。

所以你要么写

UL_ImageArr[a].Source = (ImageSource)new ImageSourceConverter().ConvertFromString(
                        "pack://application:,,,/Team Logos/ARI.tif");
Run Code Online (Sandbox Code Playgroud)

或者

UL_ImageArr[a].Source = new BitmapImage(new Uri(
                        "pack://application:,,,/Team Logos/ARI.tif"));
Run Code Online (Sandbox Code Playgroud)

或者

UL_ImageArr[a].Source = BitmapFrame.Create(new Uri(
                        "pack://application:,,,/Team Logos/ARI.tif"));
Run Code Online (Sandbox Code Playgroud)