Гид по технологиям

Создание и рисование фигур в JES

6 min read Обработка изображений Обновлено 09 Jan 2026
Рисование фигур в JES: прямоугольники, овалы, линии
Рисование фигур в JES: прямоугольники, овалы, линии

Важно: все координаты в JES считаются от верхнего левого угла изображения. Координаты и размеры задаются в пикселях.

Введение

JES (Jython Environment for Students) — это среда, которая позволяет программно изменять пиксели изображения и добавлять графические примитивы: линии, прямоугольники, овалы и круги. Такой подход удобен для автоматизации рутинных правок, создания визуальных эффектов и обучения основам обработки изображений.

Краткое определение терминов:

  • Пиксель — минимальный элемент изображения (точка), задаётся цветом.
  • Полотно (canvas) — объект изображения, на котором выполняют рисование.

Код на компьютере с двумя экранами, один из которых отображает изображение автомобиля

Как создать пустое полотно в JES

Если вы хотите рисовать на чистом фоне, используйте встроенную функцию makeEmptyPicture(width, height). Ниже приведён минимальный пример: создаём функцию, создаём полотно и отображаем его.

  1. В новом JES-приложении создайте функцию createEmptyPicture():
def createEmptyPicture():
  1. Внутри функции вызовите makeEmptyPicture(), передав ширину и высоту в пикселях. JES использует Jython, поэтому соблюдайте отступы так же, как в Python:
    emptyPicture = makeEmptyPicture(600, 300)
  1. Отобразите изображение с помощью show():
    show(emptyPicture)
  1. Нажмите кнопку Загрузить программу между областью кода и командной строкой. Подтвердите сохранение, если нужно. Диалог загрузки программы и сохранения файла

  2. Введите в командной строке:

createEmptyPicture()

и нажмите Enter, чтобы вызвать функцию. Вызов функции создания пустого изображения в командной строке

  1. После выполнения откроется окно с новым пустым полотном. Окно с новым пустым полотном 600×300 пикселей

Как создать и добавить прямоугольники

Координаты (x, y) в JES начинаются в верхнем левом углу изображения: x растёт вправо, y — вниз. На картинке ниже показаны примеры координат и ориентация осей.

Пустое изображение с примерами координат и ориентацией осей

Для рисования прямоугольников используйте addRect() и addRectFilled(). Параметры: (картинка, x1, y1, x2, y2, цвет). x1,y1 — верхний левый угол, x2,y2 — нижний правый.

Пример:

  1. Создайте функцию drawRectangle():
def drawRectangle():
  1. Создайте пустое полотно внутри функции:
    pic = makeEmptyPicture(600, 300)
  1. Нарисуйте контур прямоугольника:
    addRect(pic, 50, 100, 200, 150, red)
  1. Нарисуйте заполненный прямоугольник:
    addRectFilled(pic, 100, 200, 200, 250, red)
  1. Покажите изображение:
    show(pic)
  1. Нажмите Загрузить программу при необходимости и вызовите функцию через командную строку. Вызов функции рисования прямоугольника в командной строке

  2. Дождитесь открытия окна с результатом. Результат: пустое изображение с нарисованными прямоугольниками

Совет: чтобы задать толщину линии контура, в базовом API JES стандартной опции нет — нужно рисовать несколько прямоугольников с небольшим смещением или использовать пиксельные операции для заполнения рамки.

Как создать и добавить овалы и круги

Функция addOval() рисует овалы; чтобы получить круг, задайте одинаковые ширину и высоту.

  1. Создайте функцию drawCircle():
def drawCircle():
  1. Создайте картинку:
    pic = makeEmptyPicture(600, 300)
  1. Добавьте овал (параметры: картинка, x, y, width, height, цвет):
    addOval(pic, 100, 100, 50, 100, red)
  1. Заполненный овал:
    addOvalFilled(pic, 200, 100, 50, 100, red)
  1. Круг — одинаковые ширина и высота:
    addOval(pic, 350, 100, 50, 50, red)
    addOvalFilled(pic, 450, 100, 50, 50, red)
  1. Отобразите картинку:
    show(pic)
  1. Нажмите Загрузить программу и вызовите функцию через командную строку. Вызов функции рисования овала в командной строке

  2. Результат: окно с овалами и кругами. Результат: изображение с овальными и круглыми фигурами

Практическая хитрость: для равномерных окружностей удобнее рассчитывать координаты центра и радиус заранее, особенно если фигуры позиционируются относительно других элементов.

Как создать и добавить линии

Линии рисуются функцией addLine(pic, x1, y1, x2, y2, цвет).

  1. Создайте функцию drawLine():
def drawLine():
  1. Создайте пустое полотно:
    pic = makeEmptyPicture(600, 300)
  1. Нарисуйте линию от (50,200) до (250,200):
    addLine(pic, 50, 200, 250, 200, red)
  1. Отобразите результат:
    show(pic)
  1. Нажмите Загрузить программу и выполните функцию через командную строку. Вызов функции рисования линии в командной строке

  2. Дождитесь открытия окна с линией. Результат: изображение с одной нарисованной горизонтальной линией

Совет: чтобы получить линии большей толщины, можно нарисовать несколько параллельных линий с шагом в 1 пиксель или использовать алгоритмы заливки пикселей.

Практические советы и лучшие практики

  • Планируйте координаты заранее: создайте переменные для отступов, ширины и высоты, чтобы легче менять макет.
  • Используйте функции для повторяющихся действий: написав функцию drawGrid(pic, spacing, color), можно быстрее верстать композиции.
  • Проверяйте границы: при рисовании учитывайте, чтобы x и y не выходили за границы изображения — это может вызывать ошибки или нежелательное поведение.
  • Сохраняйте исходный файл перед массовыми изменениями.

Когда этот подход не подходит

  • Если вам требуется высокопроизводительная обработка больших изображений (миллионы пикселей), интерпретируемая среда JES может быть медленнее специализированных библиотек (NumPy, OpenCV).
  • Для сложной векторной графики с трансформациями и слоями лучше использовать векторные редакторы или библиотеки SVG.
  • Если нужно точное управление толщиной контура и стилями линий (штриховка, скругления), базовый API JES ограничен.

Альтернативные подходы

  • OpenCV (Python) — для производительных операций и сложной обработки изображений.
  • Pillow (PIL) — удобна для генерации изображений и базовой графики в Python.
  • Векторная графика (SVG) — если нужна масштабируемость и точный контроль контуров.

Мини-методология: как быстро построить макет UI на холсте

  1. Определите размер холста (например, 800×600 или 1200×800). 2. Задайте сетку (grid) и отступы. 3. Нарисуйте фон и основные блоки (прямоугольники). 4. Добавьте декоративные элементы (круги, линии). 5. Проверяйте результат и сохраняйте версии.

Пример функции построения сетки:

def drawGrid(pic, spacing, color):
    width = getWidth(pic)
    height = getHeight(pic)
    x = 0
    while x < width:
        addLine(pic, x, 0, x, height-1, color)
        x = x + spacing
    y = 0
    while y < height:
        addLine(pic, 0, y, width-1, y, color)
        y = y + spacing

Чек-лист для разработчика и дизайнера

Для разработчика:

  • Создать функцию-обёртку для инициализации полотна.
  • Использовать именованные переменные для координат.
  • Добавить проверку границ.

Для дизайнера/тестировщика:

  • Проверить визуальные отступы и выравнивание элементов.
  • Проверить масштабирование при разных размерах полотна.
  • Убедиться, что цвета и контрасты соответствуют требованиям.

Критерии приёмки

  • Полотно создаётся указанного размера и отображается.
  • Прямоугольники, овалы и линии рисуются в заданных координатах.
  • Заполненные и незаполненные варианты корректно отображаются.
  • Никаких необработанных исключений при выходе координат за пределы не возникает.

Короткий справочник по цветам и размерам

  • Цвета в JES могут быть заданы предопределённо (red, blue и т.д.) или через RGB-значения при необходимости.
  • Единицы измерения: пиксели. Типичные размеры холста: 320×240, 640×480, 800×600, 1200×800.

Шаблон быстрого теста (acceptance):

  1. Создать полотно 600×300.
  2. Нарисовать контурный прямоугольник в (50,100)-(200,150).
  3. Нарисовать заполненный прямоугольник в (100,200)-(200,250).
  4. Нарисовать овал и круг в обозначенных местах.
  5. Нарисовать горизонтальную линию от (50,200) до (250,200).
  6. Убедиться, что все фигуры видны и расположены корректно.

Отладка и типичные ошибки

  • Пустое окно без фигур: проверьте, был ли вызван show() и вызов функции через командную строку.
  • Фигура не видна: проверьте координаты и цвет (например, цвет совпадает с фоном).
  • Неправильная ориентация: помните, что ноль по вертикали вверху.

Маленькая галерея крайних случаев

  • Нарисовать фигуру целиком за пределами холста — не будет видно.
  • Очень тонкие линии на больших разрешениях могут не читаться — увеличьте толщину или масштаб.

Глоссарий (1 строка)

  • makeEmptyPicture — создать пустой объект-изображение заданного размера.
  • addRect / addRectFilled — нарисовать контурный или заполненный прямоугольник.
  • addOval / addOvalFilled — нарисовать контурный или заполненный овал/круг.
  • addLine — нарисовать линию между двумя точками.

Заключение

Вы теперь умеете создавать пустые холсты и добавлять на них прямоугольники, овалы и линии в JES. Экспериментируйте с позиционированием, размерами и цветами, объединяйте примитивы, чтобы строить более сложные композиции. Если требуется высокая производительность или продвинутая обработка — подумайте о переносе логики на OpenCV или Pillow.

Короткий план дальнейших шагов: начать с шаблона, добавить утилиту для расчёта координат, затем скрипт для автогенерации нескольких изображений с вариациями.

Дополнительные ресурсы

  • Официальная документация JES и примеры в среде.
  • Учебники по Python для освежения базовых навыков работы с отступами и функциями.

Итог

  • JES удобен для программного рисования простых фигур и быстрых прототипов.
  • Для сложных задач рассматривайте более мощные библиотеки.
Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

RDP: полный гид по настройке и безопасности
Инфраструктура

RDP: полный гид по настройке и безопасности

Android как клавиатура и трекпад для Windows
Гайды

Android как клавиатура и трекпад для Windows

Советы и приёмы для работы с PDF
Документы

Советы и приёмы для работы с PDF

Calibration в Lightroom Classic: как и когда использовать
Фото

Calibration в Lightroom Classic: как и когда использовать

Отключить Siri Suggestions на iPhone
iOS

Отключить Siri Suggestions на iPhone

Рисование таблиц в Microsoft Word — руководство
Office

Рисование таблиц в Microsoft Word — руководство