gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 07:07:29 25 4
gpt4 key购买 nike

我正在编写一个应用程序,其唯一目的是定期下载一些图像并将它们显示在动态磁贴中。我希望能够每三十分钟左右用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com