Алгоритмы
Все элементы рисуем при помощи одной процедуры и при использовании case:
procedure TForm3.Button3Click(Sender: TObject);
1. Нарисовать точку, используя стиль линии
procedure PixelSize(X,Y: Integer);
x, y – координата точки – «пикселя», в зависимости от толщины линии, выводит объект «уголок» с заданной шириной.
procedure PixelStyle(X, Y: Integer);
x, y – координата точки – «пикселя», в зависимости от вида и толщины линии, выводит или не выводит объект «крест» с заданной шириной задействует процедуру PixelSize
2. Обычный ЦДА
Цифровой дифференциальный анализатор
С помощью ЦДА решается дифференциальное уравнение отрезка:
dY/dX= dy / dx
где
dx:= xk - xn; приращение координат отрезка по оси Y
dy:= yk - yn; приращение координат отрезка по оси X
Установим начальные значения:
xt:= xn;
yt:= yn;
где
(xn, yn) – координаты начальной точки,
(xk, yk) – координаты конечной точки, полученные в качестве параметров функции:
Case linetype of 1:
Определим количество узлов N, используемых для аппроксимации отрезка.
n:= abs(dx) + abs(dy);
Затем за n циклов вычисляются координаты очередных узлов:
xt:= xt + dx / n;
yt:= yt + dy / n;
Получаемые значения xt, yt преобразуются в целочисленные значения координаты очередного пиксела округлением
PixelStyle(round(xt), round(yt));
На каждом шаге цикла выводим получившийся пиксель, используя стиль пера.
3. Несимметричный ЦДА;
Case linetype of 2
(xn, yn) – координаты начальной точки,
(xk, yk) – координаты конечной точки
Процедура осуществляющая рисование отрезка по алгоритму несимметричного ЦДА.
4. Case linetype of 3:
procedure brezenhem(xn, yn, xk, yk: Integer);
(xn, yn) – координаты начальной точки,
(xk, yk) – координаты конечной точки
Процедура осуществляющая рисование отрезка по алгоритму Брезенхема.
5. Генерация окружности
Case Linetype of 4:
xn, yn – центр окружности, r – радиус.
Процедура осуществляющая рисование окружности по алгоритму Брезенхема.
Интерфейс
6. Очистка экрана
Procedure TForm3.Button1Click(Sender: TObject);
7. Изменение толщины линии
procedure TFormLab2.ComboBox1Change(Sender: TObject);
8. Изменение вида линии
procedure TFormLab2.ComboBox2Change(Sender: TObject);
9. Рисуем фигуру
procedure TForm3.Button3Click(Sender: TObject);
10. Установка начальной координаты
procedure TFormLab2.PaintBox1MouseDown(Sender: TObject; Button: TMouseButton);
установка значений - xn, yn
11. Определение второй координаты, выбор процедуры обработки и нарисования отрезка
procedure TFormLab2.PaintBox1MouseUp(Sender: TObject; Button: TMouseButton);
установка значений - xк, yк
уководство пользователя
Для запуска программы необходимо запустить файл MainProject.exe.
В открывшемся окне (рис.5.1.) необходимо выбрать программу, которую необходимо запустить. При выборе «Лабораторная работа 2» откроется окно (см. рис. 5.2)
Рисунок 5.1. Интерфейс главного окна программы
Рисунок 5.2. Окно лабораторной работы 2
Для продолжения работы необходимо выбрать алгоритм от рисовки отрезка или окружности. В окошечках ввода можно выбрать ширину линии, стиль и цвет.
Для начертания отрезка необходимо выбрать точку начала отрезка, зажать левую клавишу мыши, протянуть до конечной точки отрезка, отпустить кнопку мыши.
Для рисования окружности необходимо выбрать центр окружности, с нажатой клавишей протянуть на величину радиуса, отпустить клавишу мыши.
Для рисования фигуры необходимо выбрать координаты рисования фигуры и нажать кнопку «Рис.фигуру».
Заключение
В ходе лабораторной работы мы познакомились с математическими алгоритмами, для вывода отрезков и смогли реализовать их программно.