Написать текст на изображении в WP7

Я новичок в разработке 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 ответа

Вам необходимо получить 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);
    }

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

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

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

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

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

Другие вопросы по тегам