1

WriteAbleBitmapからIconicTileDataの url プロパティに移動する方法がわかりませんIconImage

これまでの私のコードは次のとおりです。

        protected override void OnInvoke(ScheduledTask task)
        {
            ShellTile tile = ShellTile.ActiveTiles.FirstOrDefault();

            if (tile != null)
            {
                WriteableBitmap genTile = renderTile(202, 202);

                tile.Update(new IconicTileData()
                {
                    Title = "IconicTileData",
                    IconImage = /* PATH TO genTile */
                });
            }

            ScheduledActionService.LaunchForTest(task.Name, TimeSpan.FromSeconds(3));

            NotifyComplete();
        }

        private WriteableBitmap renderTile(int width, int height)
        {
            Canvas can = new Canvas();
            can.Background = new SolidColorBrush(Color.FromArgb(255, 0, 255, 0));
            can.Width = width;
            can.Height = height;

            WriteableBitmap tileImage = new WriteableBitmap(width, height);

            tileImage.Render(can, null);

            tileImage.Invalidate();
            return tileImage;
        }

解決策は、ファイルを保存することでしょうか? ShellTile はアプリケーションと同じスペースを共有しません。

4

1 に答える 1

1

ファイルを分離ストレージに保存し、Uri で "isostore:" プレフィックスを使用します。

public static void StoreSavedResultImage(string filename, WriteableBitmap wb)
        {
            using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication())
            {
                if (isf.FileExists(filename))
                    isf.DeleteFile(filename);

                using (IsolatedStorageFileStream fs = isf.CreateFile(filename))
                {
                    wb.SaveJpeg(fs, wb.PixelWidth, wb.PixelHeight, 0, 100);
                    fs.Close();
                    wb = null;
                    img = null;
                }
            }
        }

ライブ タイルの分離ストレージからファイルを参照する場合は、ファイルを /Shared/ShellContent フォルダーに保存する必要があります。

Uri wideUri = new Uri("isostore:/Shared/ShellContent/app_wide.jpg"), UriKind.Absolute);

tile.Update(new IconicTileData()
                {
                    Title = "IconicTileData",
                    IconImage = wideUri
                });
于 2012-12-18T03:15:44.053 に答える