首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >向循环瓷砖添加文本(Windows 8)

向循环瓷砖添加文本(Windows 8)
EN

Stack Overflow用户
提问于 2013-02-26 07:08:18
回答 1查看 401关注 0票数 3

我正在编写一个应用程序,它的唯一目的是定期下载一些图像,并将它们显示在一个活瓷砖中。我希望能够每隔30分钟更新4-8张图片,所以我需要使用CycleTile。下载图片并将它们放入活瓷砖中是非常直接的。真正的刺激因素是在每个图像上添加文本。

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

所以我的下一个想法是在一个TextBlock上覆盖一个WriteableBitmap。这可以工作,但我认为它会变得复杂,考虑到诸如:不同的图像分辨率,中/大型瓷砖布局,以及不同的屏幕PPI等因素。我肯定我能搞清楚,但看起来.凌乱。

有更好的方法吗?有什么我忽略的瓷砖特征吗?

总而言之,我的要求是:

  1. 使用活瓷砖显示4-8张图像.
  2. 每个图像都需要有一些与其相关的文本。
  3. 每隔30分钟更新一次图片。
  4. 需要缩放到宽的瓷砖。
  5. 需要扩展到具有更高PPI屏幕的手机。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-06-15 05:48:32

对于第一项,您应该能够使用来自WriteableBitmapEx项目的Blit方法合并尽可能多的图像。由于您可以合并您的图像以任何您想要的方式,您可以确保他们涵盖宽的瓷砖宽度和任何你需要的ppi。

为了涵盖第二项,以下内容将在图像上覆盖文本:

代码语言:javascript
运行
复制
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;
    }
}

当然,您也可以传递文本块,或者配置文本块的选项。但我想展示一下,你可以如何格式化文本,不管你想要什么。

背景任务涵盖了您的第三个请求。在您的电话解决方案中,添加一个新的项目,您可以选择背景任务。让这个调用(您的代码)来更新图像是相当简单的。诺基亚甚至创建了一个穿行,说明如何添加一个带有代码示例的例子。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15083325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档