Написать текст на изображении в WP7 - PullRequest
3 голосов
/ 13 марта 2012

Я новичок в разработке 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 не поддерживается. Так как я могу это сделать?

Edit:

Мне нужно выбрать изображение из pictures hub или сделать снимок, используя camera, отобразить его в элементе управления изображением, написать текст и сохранить его под другим именем.

Любые предложения приветствуются.

Ответы [ 2 ]

4 голосов
/ 13 марта 2012

Вам необходимо получить WriteableBitmap, которым затем можно манипулировать.

Это можно сделать, либо добавив UIElement с помощью метода Render, либо вы можете напрямую управлять пикселями с помощью массива Pixels.

Возможно, вам нужно всего лишь добавить TextBlock элементов к растровому изображению, но если вам интересно, как работают пиксели, вот как это делается:

У меня есть только опыт работы с пикселями. Это не совсем просто, но вы получаете доступ к пикселю (x, y) в одномерном массиве, переводя y * width + x.

Значение имеет формат argb32, то есть значения для альфа-канала (непрозрачность), красного, зеленого и синего. Перевод между обычными 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);
    }
2 голосов
/ 13 марта 2012

Зачем вам нужно, чтобы они были встроены в изображение?

Вы можете просто поместить свое изображение и текст в сетку, например:

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

, которая будет накладывать ваше изображение на текст безнеобходимость изменить изображение, чтобы вы могли использовать его позже.Он также предоставляет больше свободы для привязок и т. Д., Так как вы можете связывать как разные вещи, так и самостоятельно включать и выключать их.

Если вы используете XNA, это также можно сделать, манипулируя пикселями Texture2D одинаково.как сказал Фейстер.

...