ContextInterface

class axioma.render.ContextInterface

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

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

  • Context

  • MapContext

    static deviceDpi(dev)

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

    Параметры:dev (QPaintDevice) – Устройство для анализа
    Результат:значение dpi
    Тип результата:int
    deviceToSceneTransform()

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

    Результат:Матрица преобразования
    Тип результата:QTransform
    dpi()

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

    Результат:Количество точек на дюйм
    Тип результата:int
    painter()

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

    Результат:QPainter для рисования
    Тип результата:QPainter
    sceneToDeviceTransform()

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

    Результат:Матрица преобразования
    Тип результата:QTransform
    setDpi(dpi)

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

    Параметры:dpi (int) – Новое значение
    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