我是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
拍照并将其显示在图像控件中并写一些文字并使用其他名称保存。
欢迎任何建议。
答案 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的像素来完成。