WPF - Uri到内容图像

时间:2014-10-22 18:27:46

标签: c# image windows-runtime

我花了1个小时浏览互联网并试图找到一种方法如何将Uri加载到内容图像并创建一个BitmapImage。

这就是我所拥有的:

{
    Uri x = new Uri("/Images/appbar.chevron.up.png", UriKind.Relative);
    BitmapImage bi = new BitmapImage(x);
    return x;
}

解决方案资源管理器中的图像正在项目中:

enter image description here

每张图片都将Build Action as Content

enter image description here

我在创建BitmapImage时收到The given System.Uri cannot be converted into a Windows.Foundation.Uri. Please see http://go.microsoft.com/fwlink/?LinkID=215849 for details.,但调试器告诉我Uri已创建:

enter image description here

请告诉我,如何加载所选图像?

2 个答案:

答案 0 :(得分:0)

我不确切知道WinRT中的内容和资源是如何工作的,但在WPF中," Content"必须将项目复制到输出目录。它们被添加到清单中,但文件本身并未嵌入。

如果要嵌入文件,请使用"资源"的构建操作。 (WinRT甚至不支持"内容" - 我从未使用过它)。您还需要使用Absolute方案创建ms-appx: URI。

答案 1 :(得分:0)

如上所述,要从您的应用包中加载图像,您将使用ms-appx协议。请参阅MSDN上的URI schemes文档

Uri x = new Uri("ms-appx:///Images/appbar.chevron.up.png");
BitmapImage bi = new BitmapImage(x);

然后,您需要将BitmapImage而不是URI返回给调用者:

return bi; // not: return x;

或者将其设置在Image控件上。 BitmapImage只是数据,不会单独显示。

img.SetSource(BI);

在你的Xaml中创建img:

根据您尝试在appbar按钮中设置图片的名称进行猜测。为此,您可以使用Segoe UI Symbol字体而不是加载图像:

<AppBarButton>
    <AppBarButton.Icon>
        <FontIcon FontFamily="Segoe UI Symbol" Glyph="&#57361;"/>
    </AppBarButton.Icon>
</AppBarButton>
<AppBarButton>
    <AppBarButton.Icon>
        <FontIcon FontFamily="Segoe UI Symbol" Glyph="&#57360;"/>
    </AppBarButton.Icon>
</AppBarButton>

或者,如果您想将AppBarButtons设置为xaml中的图像:

<AppBarButton>
    <AppBarButton.Icon>
        <BitmapIcon UriSource="Images/appbar.chevron.up.png"/>
    </AppBarButton.Icon>
</AppBarButton>
<AppBarButton>
    <AppBarButton.Icon>
        <BitmapIcon UriSource="Images/appbar.chevron.down.png"/>
    </AppBarButton.Icon>
</AppBarButton>