axioma.render.
LegendItemComponent
¶Элемент легенды LegendItem для векторного слоя
LegendItemComponent
(style, description, objects=-1)¶Конструктор
Параметры:
LegendItemComponent
(other)Копирующий конструктор
Параметры: other ( LegendItemComponent
) – Исходный объект LegendItemComponent, на базе которого необходимо сделать копию.
description
()¶Описание элемента. Если методе setDescriptionChanged установлено значение, отличное от None, показывается оно, в противном случае исходное.
Результат: Строка с описанием Тип результата: str
fullDescription
()¶Полное описание элемента. Если в конструкторе (или посредством метода setObjectCount) передано количество объектов со значением, отличающимся от -1, в описание включается и данное значение. В противном случае результат аналогичен методу description
Результат: Строка с описанием Тип результата: str
setDescriptionChanged
(description)¶Замена текстового описания. При этом исходное описание сохраняется. Используется, если есть необходимость изменить тестовую подпись с возможностью его сохранение при обновлении параметров элемента легенды.
Параметры: description ( str
) – Описание
axioma.render.
LegendItem
¶Легенда для векторного слоя.
От него наследуются: FeatureLegendItem
, ThematicLegendItem
LegendItem
(caption, parent=None)¶Конструктор
Параметры:
LegendItem
(caption, overrideComponentsб parent=None)Конструктор
Параметры:
- caption (
str
) – Наименование (заголовок) легенды.- overrideComponents (
list
[LegendItemComponent
]) – Список элементов легенды- parent (
QObject
) – Владелец элемента легенды. При удалении владельца так же удаляется и сам элемент
LegendItem
(other)Копирующий конструктор
Параметры: other ( LegendItem
) – Исходный объект, на базе которого создается новый.
clone
()¶Делает копию текущего объекта
Результат: Копия объекта Тип результата: LegendItem
rect
()¶Прямоугольник, который занимает данный элемент легенды
Результат: Ограничивающий прямоугольник Тип результата: QRectF
rect
(pos)Прямоугольник, который занимает данный элемент легенды с указанием начальной точки
Параметры: pos ( QPointF
) – Левый верхний уголРезультат: Ограничивающий прямоугольник Тип результата: QRectF
refreshStyleItems
()¶Обновление значений элементов легенды
draw
(context)¶Отрисовка элемента легенды в заданном контексте
Параметры: context ( Context
) – Контекст, в котором будет отрисован элемент легенды
draw
(context, pos)Отрисовка элемента легенды в заданном контексте
Параметры:
drawSelected
(context)¶Отрисовка выделения элемента легенды в заданном контексте
Параметры: context ( Context
) – Контекст, в котором будет отрисовано выделение элемента легенды
drawSelected
(context, pos)Отрисовка выделения элемента легенды в заданном контексте
Параметры:
baseSizeStyleElement
()¶Базовый размер элемента. Остальные параметры масштабируются относительно этого размера
Результат: Размер Тип результата: QSize
setBaseSizeStyleElement
(value)¶Переопределение базового размера элемента
Параметры: value ( QSize
) – размер
textRender
()¶Отрисовщик элементов легенды
Результат: Установленное значение Тип результата: TextRenderer
setTextRender
(value)¶Установка нового значения отрисовщика элемента
Параметры: value ( TextRenderer
) – Новое значение
setCaption
(value)¶Установка нового значения заголовка элемента легенды
Параметры: value ( str
) – Новое значения заголовка
setSubCaption
(value)¶Установка нового значения подзаголовка элемента легенды
Параметры: value ( str
) – Новое значения подзаголовка
textRenderCaption
()¶Отрисовщик заголовка легенды
Результат: Установленное значение Тип результата: TextRenderer
setTextRenderCaption
(value)¶Установка нового значения отрисовщика заголовка легенды
Параметры: value ( TextRenderer
) – Новое значение
textRenderSubCaption
()¶Отрисовщик подзаголовка легенды
Результат: Установленное значение Тип результата: TextRenderer
setTextRenderSubCaption
(value)¶Установка нового значения отрисовщика подзаголовка легенды
Параметры: value ( TextRenderer
) – Новое значение
basePoint
()¶Базовая точка, относительно которой производится отрисовка элемента легенды
Результат: Точка Тип результата: QPointF
borderStyle
()¶Стиль окантовки. Если не указан (равен None), окантовка не рисуется. По-умолчанию окантовка отсутствует
Результат: Стиль Тип результата: LineStringStyle
setBorderStyle
(style)¶Задание стиля окантовки
Параметры: style ( LineStringStyle
) – Стиль. Значение None убирает окантовку
numberColumns
()¶Количество колонок, на которые разбиваются элементы легенды. По-умолчанию установлено значение 1.
Результат: Количество колонок. Тип результата: int
transform
(transform)¶Преобразование (трансформирование) легенды
Параметры: transform ( QTransform
) – Матрица преобразования
setVisibledItem
(index, value)¶Управление видимостью элемента легенды.
Параметры:
setDescriptionItem
(index, value)¶Изменение описания элемента легенды
Параметры:
moveItem
(oldPos, newPos)¶Перемещение (смена позиции) элемента легенды
Параметры:
styleItems
()¶Список элементов легенды
Результат: Список Тип результата: list
[LegendItemComponent
]
styleItemAt
(index)¶Возвращает элемент по его индексу
Параметры: index ( int
) – ИндексРезультат: Элемент Тип результата: LegendItemComponent
updateComponent
(index, component)¶Замена существующего элемента легенды новым значением
Параметры:
- index (
int
) – Индекс- component (
LegendItemComponent
) – Замещающий элемент
aboutToBeDestroyed
()¶[signal] Сигнал, который срабатывает при удалении легенды
Пример использования:
# Импорт from axioma.render import * from PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * class StyleDialog(QDialog): def __init__(self, parent, layers): QDialog.__init__(self, parent) self.setGeometry(200, 200, 600, 400) self.setWindowTitle('Пример легенды') self.layers = layers # Перечень слоев, для которых будет строиться легенда self.image = QImage() # временный растр, куда производится отрисовка легенды # Создание контекста def createContext(self, painter): deviceRect = sceneRect = QRectF(0,0,100,100) viewport = Viewport (deviceRect,sceneRect) return Context(painter, viewport) # Отрисовка элемента легенды def drawElement(self, fi, context, pos): r = fi.rect() fi.draw(context, pos) pos.setY(pos.y() + 10 + r.height()) return pos def renderLegend(self): # Рисуем в растр self.image = QImage(self.size(), QImage.Format_ARGB32_Premultiplied) painter = QPainter(self.image) painter.fillRect(self.image.rect(), Qt.white) context = self.createContext(painter) pos = QPoint(10, 10) for lay in self.layers: if isinstance(lay, HasStyles): # Если есть легенда fi = FeatureLegendItem(lay, lay.name(), self) pos = self.drawElement(fi, context, pos) if isinstance(lay, LayerWithThematic): thematics = lay.createLegendsList() # Перечень легенд для тематики, если таковые имеются for them in thematics: pos = self.drawElement(them, context, pos) def paintEvent(self, event): try: painter = QPainter(self) if not self.image.isNull(): painter.drawImage(0,0, self.image) except Exception as ex: print(ex) def resizeEvent(self, event): self.renderLegend() # Текущая карта mapview = axioma.app.mainWindow.mapViewManager().currentMapView() if mapview is not None: layers = mapview.map().flatLayerList() # Список слоев карты dlg = StyleDialog(axioma.app.mainWindow, layers) dlg.exec() else: QMessageBox.information(axioma.app.mainWindow, QObject().tr("Информация"), QObject().tr("Текущая карта не найдена"))