CycleTile在我的图像windows手机上留下了阴影

时间:2013-07-04 10:33:05

标签: windows-phone-8 windows-phone live-tile

我正在尝试为我的Windows Phone 8应用程序制作一些美味的实时平铺动作。我选择使用Cycle Tile模板来制作一些令人敬畏的滑动图像但是有一个问题:微软似乎已经为所有图像添加了一个灰色半透明滤镜,以便底部的标题文字即使在白色图像的情况。如果开发者打算使用WritableBitmap制作地铁样式拼贴,这很烦人。白色为灰白色,主题颜色比其他所有瓷砖更暗:

WHY!?

代码(在可视化树中的用户控件中):

    const double TILE_H = 336;
    const double TILE_W = 691;
    Size TILE_SIZE = new Size(TILE_W, TILE_H);
    const string FILEDIREC = "/Shared/ShellContent";

    LayoutRoot.Height = TILE_H;
    LayoutRoot.Width = TILE_W;
    LayoutRoot.Clip = new RectangleGeometry() { Rect = new Rect(new Point(), TILE_SIZE) };
    LayoutRoot.Background = new SolidColorBrush(
        ((Color)Application.Current.Resources["PhoneAccentColor"]));

    TextBlock tb = new TextBlock();
    Canvas.SetLeft(tb, 200.0);
    tb.Text = "Why is this text grey? + lots more text";
    tb.FontSize = 50;
    tb.Width = 300;
    tb.Foreground = new SolidColorBrush(Colors.White);
    tb.TextWrapping = TextWrapping.Wrap;
    LayoutRoot.Children.Add(tb);

    var bmp = new WriteableBitmap((int)TILE_W, (int)TILE_H);
    bmp.Render(LayoutRoot, null);
    bmp.Invalidate();
    var isf = IsolatedStorageFile.GetUserStoreForApplication();
    var filename = FILEDIREC + "/tile.jpg";
    if (!isf.DirectoryExists(FILEDIREC))
    {
      isf.CreateDirectory(FILEDIREC);
    }
    using (var stream = isf.OpenFile(filename, System.IO.FileMode.OpenOrCreate))
    {
      bmp.SaveJpeg(stream, (int)TILE_W, (int)TILE_H, 0, 100);

    }
    imageURIs.Add(new Uri("isostore:" + filename, UriKind.Absolute));
    //similar process for other images used by CycleTileData
    //these images then added to CycleTileData in the usual way

任何帮助,解释,建议或解决方法以获得去油污将非常感激。谢谢。我尝试过使用不同图块类型的图像,例如。翻盖瓷砖的正面没有问题。

1 个答案:

答案 0 :(得分:1)

我没有看到任何明显的代码问题,但我会尝试使用Isolated Storage Explorer并下载文件并查看它的外观。

生成自定义图块时,您可能需要考虑生成PNG而不是JPG。其中一个好处是,您可以生成透明图像(这意味着您的图块将始终具有正确的主题背景颜色),PNG也使用非有损压缩方案,因此不会引入压缩工件。

看看this answer,我在其中介绍了如何在我的某个应用中生成切片。希望这对你有用。