При закрытии подписчики были переданы в рассылку "Обзор инструментов SEO-оптимизатора и методов продвижения" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
В этот раз займёмся выводом текста на экран в различных режимах и с форматированием. В GTK+ формированием и отображением текста занимается целая библиотека - Pango. Ещё есть векторная графическая библиотека Сairo, но она позволяет уже выводить текст под разными углами, но пока мы заёмёмся Pango. С помощью библиотеки Pango можно выводить текст в кодировке UTF8, таким образом текст может быть интернациональным. Часть 1. Рассмотрим, как можно вывести текст в область рисования с помощью функций Pango. Пока графический файл не открыт, будем выводить текст посредине
экрана: Для этого в файл image_viewer.c в функцию перерисовки картинки map_expose()
вставим код: Для вывода текста создаётся слой Pango - PangoLayout, в который помещаем текст, а
затем слой Pango отображаем в GDK окне виджета draw_area. GdkScreen *screen =
gdk_screen_get_default(); Узнаём шрифт по умолчанию для созданного контекста. // шрифт Потом задаём характеристики шрифта - имя шрифта, стиль, жирность и размер. pango_font_description_set_family(desc,"Arial"); Затем создаём PangoLayout из созданного контекста, layout = pango_layout_new(context); добавляем в него текст. pango_layout_set_text(layout,text,(int)strlen(text)); Чтобы вывести текст точно по центру окна, нужно знать размены окна и размеры
текста. pango_layout_get_size(layout,&size_x,&size_y); Остаётся только отобразить текст на экране: gdk_draw_layout(draw_area->window,gc,dx/2-size_x/2,dy/2-size_y/2,layout); Напоследок почистим память: g_object_unref(context); g_object_unref(layout);
Часть 2.
Дополнительные теги
В качестве примера использования новой возможности добавим диалог "О программе" и напишем в нём форматированный текст. В обработчик меню menuitem_response() добавим перехват выбора меню About: if
(!strcmp(menu_name,"About")) Вот код диалоговой функции: // диалог
- О программе Здесь нет ничего необычно, создаётся окно dialog, упаковываем в него текстовую метку label, отображаем диалог и запускаем ожидание нажатия клавиши кнопки OK (или закрытия диалога). Вот строка, которую будем выводить в текстовой метке: (Синий текст, жирый и большой.) str =
g_strdup_printf("<span foreground=\"#00f\" weight=\"bold\"
size=\"x-large\">Image Viewer
v.%s</span>",VERSION);
|
В избранное | ||