- Создал(а) Рудковский Михаил (доб. 1236), редактировал(а) Дмитрий Гаврилов июл 03, 2024
resources/gui_and_objects/figures.py
Модуль предназначен для отображения фигур на канале.
Отображение фигур работает только для локальных каналов. Т.е. скриптом нельзя отображать каналы на удаленном сервере.
Для того, чтобы увидеть фигуры обязательно необходимо включить "отображение фигур и субтитров из скриптов" в настройках отображения вида. Подробнее в руководстве оператора: Настройка внешнего вида окна камеры
Для отображения используется метод draw(channel_guid, *figures), где:
channel_guid (str)
: Guid канала*figures
- Список фигур, которые необходимо отобразить на канале.
Для большинства фигур необходимо задать координаты, которые задаются в диапазоне [0, 100].
При этом [0, 0] - координаты левого верхнего угла, а [100, 100] - координаты нижнего правого угла.
Для очистки всех фигур на канале используйте метод host.figure_remove(channel_guid)
Список возможных фигур с примерами:
line(xy_1, xy_2, color="#1FC619", width=2)
xy_1 (List[int, int])
- Координаты начала линииxy_2 (List[int, int])
- Координаты конца линииcolor (str, optional)
: Цвет линии, по умолчанию#1FC619
width (int, optional)
: Ширина линии, по умолчанию2.0
import figures channel_guid = "uR76TlcA" # Замените на guid Вашего канала figures.draw( channel_guid, figures.line([0, 0], [100, 100], color="#FF0000", width=30), figures.line([100, 0], [0, 100], color="#FF0000", width=30), figures.line([0, 50], [100, 50], color="#00FF00"), figures.line([50, 0], [50, 100], color="#00FF00"), )
rect(xy_1, xy_2, color="#1FC619")
xy_1 (List[int, int])
- Координаты верхнего левого углаxy_2 (List[int, int])
- Координаты нижнего правого углаcolor (str, optional)
- Цвет линии, по умолчанию#1FC619
import figures channel_guid = "uR76TlcA" # Замените на guid Вашего канала figures.draw( channel_guid, figures.rect([16, 16], [76, 76], color="#FFEFB0"), figures.rect([17, 17], [77, 77], color="#E3F7AB"), figures.rect([18, 18], [78, 78], color="#DB97C7"), figures.rect([19, 19], [79, 79], color="#A199D2"), figures.rect([20, 20], [80, 80], color="#FFEFB0"), figures.rect([21, 21], [81, 81], color="#E3F7AB"), figures.rect([22, 22], [82, 82], color="#DB97C7"), figures.rect([23, 23], [83, 83], color="#A199D2"), figures.rect([24, 24], [84, 84], color="#FFEFB0"), figures.rect([25, 25], [85, 85], color="#E3F7AB"), figures.rect([26, 26], [86, 86], color="#DB97C7"), figures.rect([27, 27], [87, 87], color="#A199D2"), )
fillrect(xy_1, xy_2, color="#1FC619")
xy_1 (List[int, int])
- Координаты верхнего левого углаxy_2 (List[int, int])
- Координаты нижнего правого углаcolor (str, optional)
- Цвет линии, по умолчанию#1FC619
import figures channel_guid = "uR76TlcA" # Замените на guid Вашего канала figures.draw( channel_guid, figures.fillrect([00, 00], [25, 25], color="#00FF00"), figures.fillrect([50, 00], [75, 25], color="#00FF00"), figures.fillrect([25, 25], [50, 50], color="#00FF00"), figures.fillrect([75, 25], [100, 50], color="#00FF00"), figures.fillrect([0, 50], [25, 75], color="#00FF00"), figures.fillrect([50, 50], [75, 75], color="#00FF00"), figures.fillrect([25, 75], [50, 100], color="#00FF00"), figures.fillrect([75, 75], [100, 100], color="#00FF00"), )
textbox(text, align="TL", fill=True, color="#1FC619")
text (str)
: Текстalign (str, optional)
: Положение текста, по умолчаниюTL
TL
- Top LeftTR
- Top RightBL
- Bottom LeftBR
- Bottm Right
fill (bool, optional)
: Заполняет фон цветом еслиTrue
, по умолчаниюTrue
color (str, optional)
: Цвет текста, по умолчанию#1FC619
import figures channel_guid = "uR76TlcA" # Замените на guid Вашего канала figures.draw( channel_guid, figures.textbox("Top Left", align="TL", fill=False, color="#00FF00"), figures.textbox("Top Right", align="TR", fill=True, color="#FFFFFF"), figures.textbox("Bottom Left", align="BL", fill=True, color="#FFFFFF"), figures.textbox("Bottom Right", align="BR", fill=False, color="#00FF00"), )
text_ext(xy, text, bg_color="#C5CEC4", font_color="#000000", font_size_px=12)
В Trassir версии 4.1.1120512 и ниже может не работать изменение размера текста
xy (List[int, int])
: Координаты начала текстаtext (str)
: Текстbg_color (str, optional)
: Цвет фонаfont_color (str, optional)
: Цвет текстаfont_size_px (int, optional)
: Размер шрифта
import figures channel_guid = "uR76TlcA" # Замените на guid Вашего канала figures.draw( channel_guid, figures.text_ext( [10, 10], "The space suit is technically ancient.", bg_color="#FFFFFF", font_color="#000000", ), figures.text_ext( [10, 20], "Planets yell on assimilation at earth!", bg_color="#FFFFFF", font_color="#000000", ), figures.text_ext( [10, 30], "Procedure, mankind, and powerdrain.", bg_color="#FFFFFF", font_color="#000000", ), figures.text_ext( [10, 40], "Rudely, indeed, alignment!", bg_color="#FFFFFF", font_color="#000000" ), figures.text_ext( [10, 50], "I destroy this flight, it's called chemical mystery.", bg_color="#FFFFFF", font_color="#000000", ), )
polyline(*points, color="#1FC619", width=2)
points (List[List[int, int]])
: Списоок координат точек ломаннойcolor (str, optional)
: Цвет линии, по умолчанию#1FC619
width (int, optional)
: Толщина линии, по умолчанию2
import figures channel_guid = "uR76TlcA" # Замените на guid Вашего канала snake_coordinates = [ [13, 10], [20, 10], [20, 40], [25, 40], [25, 15], [40, 15], [40, 40], [45, 40], [45, 20], [60, 20], [60, 40], [80, 40], [90, 45], [57, 45], [57, 25], [49, 25], [49, 45], [37, 45], [37, 20], [28, 20], [28, 45], [17, 45], [17, 20], [13, 15], [13, 10], ] figures.draw( channel_guid, figures.polyline( *snake_coordinates, color="#00FF00", width=10 ) )
poly(*points, color="#1FC619", width=2, fill=False)
В отличии от ломанной линии первая и последняя точки области автоматически соединяются между собой.
points (List[List[int, int]])
: Списоок координат точек ломаннойcolor (str, optional)
: Цвет линии, по умолчанию#1FC619
width (int, optional)
: Толщина линии, по умолчанию2
fill (bool, optional)
: Заливает прозрачным фоном врутренюю область
import figures channel_guid = "uR76TlcA" # Замените на guid Вашего канала figures.draw( channel_guid, figures.poly( [10, 90], [30, 10], [50, 70], [70, 10], [90, 90], color="#FF0000", width=7, fill=False # True ) )