ContextInterface

class axioma.render.ContextInterface

Базовый класс контекста рисования. Содержит информацию о том, куда производится рисование (QPainter), а так же о необходимых преобразованиях, которые необходимо применить к объекту непосредственно перед его отрисовкой (ViewportInterface)

От него наследуются:

  • Context

  • MapContext

    static deviceDpi(dev)

    Функция для расчета dpi для QPaintDevice

    Параметры

    dev (QPaintDevice) – Устройство для анализа

    Результат

    значение dpi

    Тип результата

    float

    deviceToSceneTransform()

    Матрица преобразования из координат устройства рисования в координаты сцены

    Результат

    Матрица преобразования

    Тип результата

    QTransform

    dpi()

    Количество точек на дюйм, с которым происходит рисование. Влияет на отрисовку в «реальных» единицах измерения (мм, см, пункты)

    Результат

    Количество точек на дюйм

    Тип результата

    float

    painter()

    Ссылка на объект для рисования

    Результат

    QPainter для рисования

    Тип результата

    QPainter

    sceneToDeviceTransform()

    Матрица преобразования из координат сцены в координаты устройства рисования

    Результат

    Матрица преобразования

    Тип результата

    QTransform

    setDpi(dpi)

    Устанавливает количество точек на дюйм

    Параметры

    dpi (float) – Новое значение

    setPainter(painter)

    Устанавливает QPainter для рисования

    Параметры

    painter (QPainter) – Новое значение

    viewport()

    Информация о преобразовании координат между устройством вывода и первоначальной сценой (карты или отчета). А так же о том, какой участок сцены рисуется

    Результат

    Ссылка на viewport

    Тип результата

    Viewport

Пример использования:

 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
29
30
31
32
33
34
35
36
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.
'''

import axioma.render
from PyQt5.QtGui import *
import sys

a = QGuiApplication(sys.argv)
render = axioma.render.Render()
render.initialize()

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