在WP7中写入图像上的文本

时间:2012-03-12 20:52:41

标签: image windows-phone-7 text draw

我是WP7开发的新手,我想知道如何将文字写入图像?

首先可以这样做吗?

与GDI一样,我们可以将文字写入图像,如下所示:

Dim pth As New GraphicsPath()
pth.AddString(txtSample.Text, New FontFamily(DropFont.SelectedValue), 0, Integer.Parse(DropFontSize.SelectedValue), New Point(left, top), StringFormat.GenericTypographic)

但是在WP7中,我开始知道GDI不受支持。那我该怎么办呢?

修改

我需要从pictures hub中选择一张图片或使用camera拍照并将其显示在图像控件中并写一些文字并使用其他名称保存。

欢迎任何建议。

2 个答案:

答案 0 :(得分:4)

您需要获取WriteableBitmap,然后可以对其进行操作。

这可以通过使用UIElement方法添加Render来完成,也可以使用Pixels数组直接操作像素。

您可能只需要将TextBlock元素添加到位图中,但如果您对像素处理感到好奇,请执行以下操作:

我只有像素操作的经验。这并非完全直截了当,但您可以通过翻译(x, y)来访问一维数组中的像素y * width + x

该值采用称为argb32的格式,即alpha通道(不透明度),红色,绿色和蓝色的值。常规Color和下面的argb32之间的翻译:

    int ColorToInt(Color c)
    {
        var argb32 = c.A << 24 | c.R << 16 | c.G << 8 | c.B;
        return argb32;
    }

    Color IntToColor(int argb32)
    {
        const int mask = 0x000000FF;
        byte a, r, g, b;
        a = (byte)((argb32 >> 24) & mask);
        r = (byte)((argb32 >> 16) & mask);
        g = (byte)((argb32 >> 8) & mask);
        b = (byte)(argb32 & mask);
        return Color.FromArgb(a, r, g, b);
    }

答案 1 :(得分:2)

为什么需要在图像中嵌入它们?

您只需将图片和文字放在网格中,例如:

<grid>
   <image source="YourImageSource"/>
   <TextBlock Text="Your Text Here"/>
</grid>

这将使用文本覆盖您的图像,而无需修改图像,以便以后使用它。它还提供了更多的绑定等自由度,因为您可以将它们绑定到不同的东西并单独切换进出。

如果你正在使用XNA,也可以通过像faester所说的那样操纵Texture2D的像素来完成。