axioma.render.
ContextInterface
¶Базовый класс контекста рисования. Содержит информацию о том, куда производится рисование (QPainter
), а так же о необходимых проеобразованиях,
которые необходимо применить к объекту непосредственно перед его отрисовкой (ViewportInterface
)
От него наследуются:
- static
deviceDpi
(dev)¶Функция для расчета dpi для QPaintDevice
Параметры: dev ( QPaintDevice
) – Устройство для анализаРезультат: значение dpi Тип результата: int
deviceToSceneTransform
()¶Матрица преобразования из координат устройства рисования в координаты сцены
Результат: Матрица преобразования Тип результата: QTransform
dpi
()¶Количество точек на дюйм, с которым происходит рисование. Влияет на отрисовку в «реальных» единицах измерения (мм, см, пункты)
Результат: Количество точек на дюйм Тип результата: int
sceneToDeviceTransform
()¶Матрица преобразования из координат сцены в координаты устройства рисования
Результат: Матрица преобразования Тип результата: QTransform
Пример использования:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | from axioma.cs import *
from axioma.core.geometry import *
from axioma.mapinfo import *
from axioma.render import *
from PyQt5.QtCore import QRectF, Qt
from PyQt5.QtGui import QImage, QPainter
'''
Отрисовка точки со стилем в растровый файл. При этом точка, находящаяся в середине прямоугольника ((-250, -250) (250, 250) ),
отрисовывается по центру растра размером 100*100.
'''
rect_scene = QRectF(-250,-250,500,500) # Прямоугольник сцены (карты)
rect_device = QRectF(0,0,100,100) # Прямоугольник устройства (выходного растра)
image = QImage(rect_device.size().toSize(), QImage.Format_ARGB32_Premultiplied) # Сам растр, куда будем рисовать
image.fill(Qt.white)
painter = QPainter(image)
viewport = Viewport (rect_device, rect_scene) # viewport
context = Context(painter, viewport) # контекст
point = Point(None, 0, 0) #Точка без указания координатной системы
style = MapBasicStyle().styleFromString('Symbol (33,255,14)') # Cтиль точки
point_device = point.transformed(context.sceneToDeviceTransform()) # Преобразуем в координаты выходного растра
style.draw(point_device, context) # Отрисовка
image.save('/tmp/out.png') # Сохраним в файловой системе
painter.end()
#painter = None
|