我的瓷砖创建和加载有什么问题?

时间:2012-03-21 07:39:20

标签: c# windows-phone-7

我制作了一个使用实时图块的应用程序。我得到它与backgroundtask一起工作,它显示正确的消息,但图像是完全黑色的......

以下是我将代码保存到/Shared/ShellContent/的代码:

        public MainPage()
        {
            InitializeComponent();

            CurrentPlaceList = new ObservableCollection<CurrentPlaceListItemModel>();

            using (var store = IsolatedStorageFile.GetUserStoreForApplication())
            {
                    var bmp = new WriteableBitmap(173, 173);

                    var weatherImage = new BitmapImage(new Uri("/Images/WeatherIcons/01d.png", UriKind.Relative));

                    var img = new Image { Source = weatherImage };

                    weatherImage.CreateOptions = BitmapCreateOptions.None;

                    var tt = new TranslateTransform();
                    tt.X = 0;
                    tt.Y = 0;

                    bmp.Render(img, tt);

                    bmp.Invalidate();

                    var filename = "/Shared/ShellContent/01d.jpg";
                    using (var st = new IsolatedStorageFileStream(filename, FileMode.OpenOrCreate, FileAccess.Write, store))
                    {
                        bmp.SaveJpeg(st, 173, 173, 0, 100);
                    }
            }

            StartAgent();
        }

我的ScheduledTask应该更新文本和图像的代码在哪里,图像完全是黑色的:(

        protected override void OnInvoke(ScheduledTask task)
        {
            //TODO: Add code to perform your task in background
            UpdateAppTile("-99");

            NotifyComplete();
        }

        private void UpdateAppTile(string message)
        {
            ShellTile appTile = ShellTile.ActiveTiles.FirstOrDefault();

            if (appTile != null)
            {
                StandardTileData tileData = new StandardTileData
                {
                    Title = message,
                    BackgroundImage = new System.Uri("isostore:/Shared/ShellContent/01d.jpg", System.UriKind.Absolute)
                };

                appTile.Update(tileData);
            }
        }

这是从几个教程中获取的,任何人都可以指出什么是错的?

1 个答案:

答案 0 :(得分:1)

对我而言,图像看起来没有足够的时间来加载。我认为更好的方法是做一些事情:

        StreamResourceInfo streamImage = Application.GetResourceStream(uri.Uri);
        BitmapImage bitmapImage = new BitmapImage();
        bitmapImage.SetSource(streamImage.Stream);
        Image image = new Image() { Width = uri.Width, Height = uri.Height, Source = bitmapImage };

此外,您可以查看可以为您生成磁贴的MSP工具包(NuGet上的msptoolkit)。