[go: up one dir, main page]

Skip to content

Implementation of Bresenhem, fill and cut algorythms

Notifications You must be signed in to change notification settings

arepina/bresenhem_algo

Repository files navigation

bresenhem_algo

Состав проекта:

  1. Bresenhem.h + Bresenhem.cpp - реализация алгоритмов Брезенхема
  2. Cut.h + Cut.cpp - реализация отсечения
  3. Fill.h + Fill.cpp - реализация заливок: построчной и XOR
  4. MyForm.h + MyForm.cpp - управление программой и действиями пользователя

Выполнены пункты:

  1. Рисование линии, круга и эллипса с помощью алгоритма Брезенхема
  2. Построчная и XOR заливка
  3. Отсечение

Для удоства выполнения различных функций используются вкладки меню. Чтобы создать один из трех объектов: линия, круг, эллипс требуется выбрать тип объекта, вариант отрисовки, а также желаемый цвет. Далее достаточно просто нажатием мыши задавать координаты фигур (центр и радиусы или точки начала и конца). С помощью чекбокса можно выбрать, с помощью каких срдств будет выполняться отрисовка: встроенных или реализованных автором программы. Есть возможность рандомной генерации вышеуказанных объектов с помощью кнопки рандом. Для заливки требуется выбрать тип: построчная или xor. В случае построчной можно залить фигуру нажатием кнопки мыши на стартовый пиксель(тот, от которого идет заливка). В случае xor происходит выбор файла, в котором уже хранятся линии-ребра фигуры. Также можно выполнить отсечение. Чтобы отсечь требуется выбрать две точки, которые будут образовывать диагональ окна, двумя кликами мыши. Кроме того для вышеописанных действий имеется возможность загрузки/сохранения данных в файл. В файле хранятся данные о названии фигуры, а также требуемые для их отрисовки координаты и цвет. Пример входных данных представлен в файле figures.txt. Пример данных для алгоритма Xor в файле XORdotsRed.txt. Пример всех возможных отрезков для демонстрации отсечения в файле linesForCut.txt. Для очистки области рисования треуется нажать на кнопку "Очистить"

Releases

No releases published

Packages

No packages published