windows-phone-7 - 向循环磁贴添加文本 (Windows Phone 8)

标签 windows-phone-7 image-processing windows-phone-8 windows-phone live-tile

我正在编写一个应用程序,其唯一目的是定期下载一些图像并将它们显示在动态磁贴中。我希望能够每三十分钟左右用 4-8 张图像更新磁贴,因此我需要使用 CycleTile。下载图像并将它们放入动态磁贴中非常简单。真正的关键是在每张图片上添加文字。

如果只有两张图片,我会使用翻转图 block ,一张显示在正面,一张显示在背面。然后我会通过为正面和背面分配不同的图 block 标题来添加文本。但是,由于我需要显示 2 个以上的图像,因此我需要使用 CycleTile。而且这种方法不适用于 CycleTile。 (但是,如果我错了,请纠正我!)

所以我的下一个想法是在 WriteableBitmap 上叠加一个 TextBlock。这可能行得通,但我认为考虑到以下因素,它会很快变得复杂:不同的图像分辨率、中型/大型磁贴布局和不同的屏幕 PPI。我确定我能弄明白,但它看起来……很乱。

有更好的方法吗?我忽略了一些 Tile 功能吗?

总而言之,我的要求是:

  1. 使用动态磁贴显示 4-8 张图片。
  2. 每张图片都需要关联一些文字。
  3. 每三十分钟左右更新一次图片。
  4. 需要扩展到宽磁贴。
  5. 需要扩展到具有更高 PPI 屏幕的手机。

最佳答案

对于第一项,您应该能够使用 WriteableBitmapEx 中的 Blit 方法将尽可能多的图像合并在一起。项目。由于您可以以任何您想要的方式将图像合并在一起,因此您可以确保它们覆盖宽的图 block 宽度和您需要的任何 ppi。

为了覆盖第二个项目,以下将在图像上覆盖文本:

private static ImageSource createBitmapImageWithImage(string text, int x, int y, Color textColor, BitmapSource bitmapSource)
{
    using(var mem = new MemoryStream())
    {
        //Create Formatted Text
        var textBlock = new TextBlock
            {
                Text = text,
                Foreground = new SolidColorBrush(textColor),
                FontFamily = new FontFamily("Courier New"),
                FontSize = 40
            };

        //Moves an object two dimensionally
        var tf = new TranslateTransform
            {
                X = x,
                Y = y
            };

        //Overlay text on existing image
        var bmpImage = new WriteableBitmap(bitmapSource);
        bmpImage.Render(textBlock, tf);
        bmpImage.Invalidate();

        //Convert back into bitmap
        bmpImage.SaveJpeg(mem, bmpImage.PixelWidth, bmpImage.PixelHeight, 0, 100);
        mem.Seek(0, SeekOrigin.Begin);
        var image = new BitmapImage();
        image.SetSource(mem);

        return image;
    }
}

当然你也可以传入文本 block ,或者配置文本 block 的选项。但我想展示如何根据需要设置文本格式。

您的第三个请求包含在 background tasks 中.在您的手机解决方案中,添加一个新项目,您可以选择后台任务。调用您的代码来更新图像非常简单。诺基亚甚至创造了一个 walk through关于如何添加代码示例。

关于windows-phone-7 - 向循环磁贴添加文本 (Windows Phone 8),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15083325/

相关文章:

C# - Windows Phone - MaxWidth 和 MaxHeight 属性被忽略

c# - 选择一个项目两次或更多次

r - R中的极坐标变换图像

windows-phone-7 - 如何覆盖 Windows Phone 应用程序中的相机按钮?

c# - Windows Phone 8 在应用程序关闭时显示 MessageBox(停用)

visual-studio-2010 - 未知错误 XAML

C++:OpenCV 扫描图像的性能问题

python - 复选框检测opencv

windows-phone-8 - 适用于 Windows Phone 8 的 ExpandableListView?

iphone - 制作跨所有操作系统的电话应用程序