Image 在WP7中的图像上写入文本
我是WP7开发的新手,我想知道如何将文本写入图像 首先,有可能这样做吗 在GDI中,我们可以将文本写入图像,如下所示:Image 在WP7中的图像上写入文本,image,windows-phone-7,text,draw,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.GenericTy
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不受支持。那么我该如何做呢
编辑:
我需要从图片中心
选择一幅图像,或者使用相机
拍摄一张照片,并将其显示在图像控件中,然后写入一些文本并用其他名称保存
欢迎任何建议。您需要获得一个可写的位图,然后可以对其进行操作 这可以通过使用
Render
方法添加ui元素
完成,也可以直接使用像素
数组操纵像素
您可能只需要将TextBlock
元素添加到位图中,但如果您对像素操作感兴趣,下面介绍如何操作:
我只有像素操作的经验。这并不完全是直截了当的,但您可以通过转换y*width+x
来访问一维数组中的像素(x,y)
该值的格式为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);
}
int ColorToInt(颜色c)
{
变量argb32=c.A>16)和掩码);
g=(字节)((argb32>>8)和掩码);
b=(字节)(argb32和掩码);
返回颜色。来自argb(a,r,g,b);
}
为什么需要将它们嵌入图像中
您可以简单地将图像和文本放置在网格中,例如:
<grid>
<image source="YourImageSource"/>
<TextBlock Text="Your Text Here"/>
</grid>
这将用文本覆盖图像,而无需修改图像,以便以后使用。它还为绑定等提供了更多的自由,因为您可以将两者绑定到不同的对象,并独立地将它们切换到和切换到不同的对象
如果您使用的是XNA,也可以像faester所说的那样通过操作纹理2D的像素来实现。您是想用文本覆盖图像,还是将文本写入图像并保存它(即创建一个新的Jpeg,存储到设备中,等等)@willmel不重叠我需要写文本。@Runewake2-我以前看过这个答案,但这是个坏主意,因为我不想只显示文本,我需要做一些操作,如更改文本的位置。然后网格不符合我的目的。@DotNetter如果需要更改文本的位置,可以通过将文本块的边距设置为所需的偏移量(将相对于网格的位置)。这应该给你完全的文本自由。另外,如果你想移动文本,那么你不想使用另一种方法将文本嵌入到图像中,因为重新生成图像的速度很慢。。。真慢。