如何在WinRT live tile上使用代码生成的图像?

时间:2013-12-14 03:08:04

标签: vb.net windows-runtime windows-8.1

我尝试在我的应用中使用BitmapRender(在Windows 8.1中)创建实时图块来创建用户控件的图像,然后我想将其添加为我的实时图块图像。

创建图像效果很好,我将其存储在应用程序的漫游文件夹中。但是,当以这种方式创建时,我无法将图像添加到实时图块 。奇怪的是,如果我将生成的文件复制到项目中,然后尝试将其附加到实时图块上,那么它的工作原理(因此图像必须正确格式化/大小等);如果我将一个随机图像复制到我的漫游文件夹并将其设置为实时图块图像它也可以工作(这意味着我可以使用漫游文件夹中的文件来设置图块图像)...这意味着我正在引用文件位置正确,图像本身能够在实时图块上使用...那么为什么它不起作用呢?

我创建了一个示例项目(下面的链接),它说明我的实时图块创建代码可以正常工作(图像存储在项目中),还可以从UI控件成功创建图像并将其存储在漫游文件夹(FWIW I尝试使用不同的文件夹而不改变行为)。

我有什么遗失的东西吗?任何见解或帮助将不胜感激。

项目是在VB.net中,但我可以在C#中找到答案,如果这更容易。

Sample project to illustrate the issue

1 个答案:

答案 0 :(得分:1)

问题是您尝试使用绝对文件路径来引用图像,这是不受支持的。如果您查看tile模式,特别是page for the element,您将看到src必须是使用http [s]://,ms-appx:///或ms-appdata的URI: ///适用于Windows应用商店应用的本地您可以使用/livetile.png的相对包内路径这一事实有点像侥幸,因为它默认为ms-appx:///livetile.png。

然后,你需要做的就是将它用于文件路径:

filepath = "ms-appdata:///local/livetile.png"

我在你的样本中试过这个并且它工作正常。请注意,此处仅支持本地文件夹,而不是漫游。这主要是因为漫游appdata开始时限制为100K,并且在那里删除平铺图像通常会很快填满您的配额。然后,您需要在每个设备上本地生成图像(这也是有意义的,因为您可以考虑当前的缩放)。