0

Application_Deacivated/Closing() で実行されるメソッドがあります。

public bool createBackTile()
    {
        if(AlarmClock.IsExists())
        {

            ImageBrush background = new ImageBrush()
            {
                ImageSource = new BitmapImage(new Uri("/BackBackgroundTheme.png", UriKind.Relative)),
                AlignmentX = AlignmentX.Center,
                AlignmentY = AlignmentY.Center
            };

            // Preparing tile image.
            TextBox tileImageData = new TextBox()
            {
                Text = AlarmClock.Read().ToShortTimeString(),
                FontSize = 45,
                FontWeight = FontWeights.Bold,
                Foreground = new SolidColorBrush(Colors.White),
                //Background = background,
                Height = 173,
                Width = 173,
                HorizontalContentAlignment = HorizontalAlignment.Center,
                VerticalContentAlignment = VerticalAlignment.Center,
                Padding = new Thickness(-12),
                Margin = new Thickness(0),
                Clip = new RectangleGeometry { Rect = new Rect(0, 0, 173, 173) }
            };

            Canvas canvas = new Canvas()
            {
                Width = 173,
                Height = 173,
                Background = background,
                Margin = new Thickness(0)
            };

            canvas.Children.Add(tileImageData);

            // Saving tile image.
            WriteableBitmap tileImage = new WriteableBitmap(173, 173);
            tileImage.Render(canvas, null);
            tileImage.Render(tileImageData, null);
            tileImage.Invalidate();
            using(var stream = IsolatedStorageFile.GetUserStoreForApplication().CreateFile("/Shared/ShellContent/BackBackground.jpg"))
            {
                tileImage.SaveJpeg(stream, 173, 173, 0, 100);
            }

            // Sets data for tile.
            StandardTileData tileData = new StandardTileData()
            {
                BackgroundImage = new Uri("BackgroundAlarmSet.png", UriKind.Relative),
                BackBackgroundImage = new Uri(@"isostore:/Shared/ShellContent/BackBackground.jpg"),
                BackContent = "",
                BackTitle = "",
            };

            // Sets tile.
            ShellTile.ActiveTiles.FirstOrDefault().Update(tileData);

            return true;
        }

        return false;
    }

ご覧のとおり、画像の背景「BackBackgroundTheme.png」を使用して、中央にテキストを配置したタイルを生成したいと考えています。そのタイルを IsolatedStorage に保存して BackBackgroundImage に割り当てようとしています。

しかし、うまくいきません。タイルがひっくり返っていますが、BackBackground は完全に黒です。この操作された背景をロードしましたが、実際には単なるブラック ボックスのようです。では、どのように機能させるのですか?

4

3 に答える 3

0

試す:BackgroundImage = new Uri(@"isostore:/Shared/ShellContent/BackBackground.jpg", UriKind.Absolute)

于 2012-05-03T19:02:46.280 に答える
0

私は最終的に問題がどこにあるかを発見しました。

Application_Closing/Deactivating() でタイル画像の生成が正しく行われていないようです。そのため、画像生成を別の場所に移動し、アプリケーションが閉じている/非アクティブになっているときに、以前に生成された画像をタイルに設定しました。

于 2012-05-04T11:07:39.627 に答える