Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Image 在WP7中的图像上写入文本_Image_Windows Phone 7_Text_Draw - Fatal编程技术网

Image 在WP7中的图像上写入文本

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

我是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不受支持。那么我该如何做呢

编辑:

我需要从
图片中心
选择一幅图像,或者使用
相机
拍摄一张照片,并将其显示在图像控件中,然后写入一些文本并用其他名称保存


欢迎任何建议。

您需要获得一个可写的位图,然后可以对其进行操作

这可以通过使用
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如果需要更改文本的位置,可以通过将文本块的边距设置为所需的偏移量(将相对于网格的位置)。这应该给你完全的文本自由。另外,如果你想移动文本,那么你不想使用另一种方法将文本嵌入到图像中,因为重新生成图像的速度很慢。。。真慢。