Vb.net 如何在WinRT live互动程序上使用代码生成的图像?

Vb.net 如何在WinRT live互动程序上使用代码生成的图像?,vb.net,windows-runtime,windows-8.1,Vb.net,Windows Runtime,Windows 8.1,我正试图通过使用BitmapRender(在Windows 8.1中)从用户控件创建图像,在我的应用程序中创建live tile,然后我想将其添加为我的live tile图像 创建图像非常有效,我将其存储在应用程序的漫游文件夹中。但是,我无法在以这种方式创建时将图像添加到实时互动程序中。奇怪的是,如果我将生成的文件复制到项目中,然后尝试将其附加到活动磁贴上,它就会正常工作(因此图像的格式/大小必须正确,等等);如果我将一个随机图像复制到我的漫游文件夹中,并将其设置为实时磁贴图像,那么它也可以工作

我正试图通过使用BitmapRender(在Windows 8.1中)从用户控件创建图像,在我的应用程序中创建live tile,然后我想将其添加为我的live tile图像

创建图像非常有效,我将其存储在应用程序的漫游文件夹中。但是,我无法在以这种方式创建时将图像添加到实时互动程序中。奇怪的是,如果我将生成的文件复制到项目中,然后尝试将其附加到活动磁贴上,它就会正常工作(因此图像的格式/大小必须正确,等等);如果我将一个随机图像复制到我的漫游文件夹中,并将其设置为实时磁贴图像,那么它也可以工作(意味着我可以使用漫游文件夹中的文件来设置磁贴图像)…这意味着我正确地引用了文件位置,并且图像本身可以在实时磁贴上使用…那么为什么它不工作呢

我已经创建了一个示例项目(下面的链接),它说明了我的live tile创建代码可以工作(在项目中存储了一个图像),并且我可以成功地从UI控件创建一个图像并将其存储在漫游文件夹中(FWIW我尝试过使用不同的文件夹,但行为没有改变)

有什么我遗漏的吗?如有任何见解或帮助,将不胜感激

这个项目是在VB.net中完成的,但如果更简单的话,我可以在C#中找到答案


问题在于,您试图使用绝对文件路径引用图像,这是不受支持的。如果查看tile模式,特别是在,您将看到src必须是使用http[s]:/、ms-appx:///或ms-appx:///的URI-appdata:///local 适用于Windows应用商店应用程序。您可以在包中使用/livetile.png的相对路径,这有点侥幸,因为默认情况下是ms-appx:///livetile.png.

那么,您需要做的就是将其用于文件路径:

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

我在你的样品中试过,效果很好。请注意,此处仅支持本地文件夹,不支持漫游。这主要是因为漫游appdata一开始就被限制在100K以内,在其中放置磁贴图像通常会很快填满您的配额。然后,您需要在每个设备上本地生成图像(这也是有意义的,因为您可以考虑当前的缩放比例)。

Kraig,感谢您的回复。事实上我在周末就知道了,但是没有时间在这里更新。除了需要使用本地文件夹外,还有一个问题阻碍了你——如果你在短时间内做了很多更改(这是测试代码时的典型情况),Windows似乎会停止更新磁贴。我相信它内置了一种快速更新的去盎司算法。测试时要做的最好的事情是确保在发布更新之前清除磁贴,因为这样会显示最新的更新。不幸的是,我是先清除磁贴的。它让我更改了几次,然后停止更新。现在我知道问题是什么了,这没什么大不了的,但是在测试过程中,它非常令人沮丧!我已经写了一篇详细的博客文章,其中有一个示例项目,供任何遇到同样问题的人使用。这在WinRT应用程序中非常重要,但实现起来非常棘手。此技术仅在Windows 8.1中有效;我还在想办法在Windows 8.0上。。。