【问题标题】:ImageSource from String not working?来自字符串的 ImageSource 不起作用?
【发布时间】:2014-04-08 01:31:29
【问题描述】:

我的项目中的一个文件夹中有一堆 *.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>

这行得通。但现在如果我尝试:

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

这行不通。是什么赋予了?我得到一个 NullReferenceException... 但这对我来说没有意义?

【问题讨论】:

    标签: c# wpf image imagesource


    【解决方案1】:

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

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

    如果你想使用ImageSourceConverter你必须通过pack-uri引用图片文件:

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

    【讨论】:

    • 感谢它的工作!很奇怪,因为我在另一个项目中使用了 convertfromstring 功能,而且效果很好。不知道为什么它不适用于这个项目。无论如何,tyvm!
    • 为什么这么复杂? BitmapImage 有一个接受 Uri 参数的构造函数。这样可以节省 BeginInit 和 EndInit 调用。只需写UL_ImageArr[a].Source = new BitmapImage(new Uri(...));
    • @Clemens,这是一种通用的初始化类型,您可以在其中调整 BitmpSourceBeginInitEndInit 之间,这在位图构造函数初始化中是不可能的。
    • @HamletHakobyan 是的,但这不是必需的。保持简单。
    【解决方案2】:

    在你后面的代码中通常会写完整的pack URI 来引用图片资源。

    所以你要么写

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

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

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

    【讨论】:

      【解决方案3】:

      如果您使用的是 WinRt,请使用此

      string url = "ms-appx:///Assets/placeHolder.png";
      return new BitmapImage(new Uri(url));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-02-22
        • 1970-01-01
        • 1970-01-01
        • 2021-10-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多