Составители:
Рубрика:
102
9. MeeGo API: работа с графикой и интернационализация
MeeGo API: Visual Services. 3D Graphics [OpenGL/GLES], 2D Graphics [Cairo,
QPainter], I18n Rendering [Pango, QtText], GTK/Clutter. Примеры использования
OpenGl, Cairo и локализации приложения по средствам I18n.
9.1. Введение
В этой лекции мы кратко рассмотрим возможности MeeGo по работе с
двухмерной и трёхмерной графикой (а именно, OpenGL ES, QPainter и
SVG), их ключевые особенности и принципы работы. Кроме того, мы
подробно охватим средства интернационализации (i18n) и локализации MeeGo приложений.
Стоит отметить, что все эти возможности реализуются с помощью фреймворка Qt.
Соответственно, несмотря на то, что мы ведём лекцию в контексте MeeGo SDK — обсуждение
кардинально не отличается от разработки обычных проектов под Qt. Кроме того в лекции
используются примеры из официальной документации MeeGo и Qt [1].
9.2. Двухмерная графика
9.2.1. QPainter, QPaintDevice, QPaintEngine
Система рисования Qt позволяет рисовать на экране и любых устройствах вывода используя один
и тот же интерфейс, основанный на трёх классах — QPainter, QPaintDevice, QPaintEngine.
QPainter используется для операций рисования, QPaintDevice — абстракция двухмерного
пространства, на котором можно рисовать используя QPainter, и QPaintEngine — это интерфейс с
помощью которого можно рисовать на разных типах устройств (см. Рис. 9.2.1). Класс QPaintEngine
используется внутри QPainter и QPaintDevice и скрыт от глаз разработчика, только если он не
создаёт свою собственную реализацию устройства вывода (наследника QPaintDevice).
Рис. 9.2.1.
Вывод графики осуществляется как через стандартные виджеты QWidgets, так и через другие
классы, как то QImage, QPixmap, QGLPixelBuffer, QPicture, QPrinter и т. д.
QPainter включает в себя высокооптимизированные функции работы с графикой, которые могут
использоваться для рисования практически любой графики, которая может понадобится. Например,
функции рисования простых линий и сложных форм, подобных секторам круга и хордам, функции
отображения выровненного текста и пиксельных рисунков и т.д. Кроме того, возможно изменение
систем координат и различные трансформации.
Типичный способ использования QPainter — рисование внутри обработчика сообщения.
Простой пример:
void SimpleExampleWidget::paintEvent()
{
QPainter paint(this);
paint.setPen(Qt::blue);
paint.drawText(rect(), Qt::AlignCenter, tr("The Text"));
}
Существует некоторые настройки, которые можно менять. Приведём часть из них:
· font() — текущие установки шрифта;
· brush() — текущие установки кисти; цвет или образец используемый для заливки, например,
круги;
· pen() — текущие настройки пера; цвет или пунктир используемый для рисования линий и
Страницы
- « первая
- ‹ предыдущая
- …
- 100
- 101
- 102
- 103
- 104
- …
- следующая ›
- последняя »
