Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая паскаль.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
813 Кб
Скачать
☆

Формат файла.

Данные в файле можно хранить множеством способов. 2 самых распространённых и простых в реализации– это простой бинарный и текстовый файлы. Для проверки валидности файла, используют специальные сигнатуры, которые добавляют в начало (например, для файла рисунка (*.bmp) это 2 символа «BM»). Будем использовать сигнатуру «SQR0»

Возьмём к примеру следующие данные:

Редактируемый параметр

Примерное значение

Размер стороны квадрата

45

Угол поворота

30

Диагонали

Есть

Цвет линии

65535 (Жёлтый)

Цвет фона

255 (Красный)

Тогда бинарный файл будет выглядеть следующим образом (HEX дамп):

53 51 52 30 2D 00 1E 00 01 FF FF 00 00 FF 00 00 00

А текстовый файл будет выглядеть следующим образом (простой текст):

«SQR0 45 30 1 65536 255»

Ini файл

ini-файлы — это обычные текстовые файлы, которые можно редактировать и просматривать при помощи любого текстового редактора. ini-файлы имеют следующий формат:

; некоторый комментарий

[Section1]

; комментарий о разделе

var1 = значение_1 ; иногда допускается комментарий к отдельному параметру

var2 = значение_2

[Section2]

var1 = значение_1

var2 = значение_2

Для представленного выше примера, INI файл будет выглядеть следующим образом:

[SQR0]

length = 45

angle = 30

diagonal = 1

LineColor = 65535

FillColor = 255

Отображение на экране

На рисунке ниже показано, как должен изображаться объект редактирования

Рис. 1. Отображение редактируемого квадрата

Положение объекта никак не редактируется, поэтому если размеры рабочей области соответствуют width и height, то координаты точки O(Ox,Oy) соответствуют (ClientWidth/2, ClientHeight/2)

Т.к. размеры квадрата определяются длиной стороны квадрата, то масштабировать квадрат по рабочей зоне не требуется. Таким образом определим координаты всех остальных точек:

Ax = Ox+(length/2*(-cos(angle*π /180)+sin(angle*π /180)))

Ay = Oy+(length/2*(-sin(angle*π /180)-cos(angle*π /180)))

Bx = Ox+(length/2*(+cos(angle*π /180)-sin(angle*π /180)))

By = Oy+(length/2*(-sin(angle*π /180)-cos(angle*π /180)))

Cx = Ox+(length/2*(+cos(angle*π /180)-sin(angle*π /180)))

Cy = Oy+(length/2*(+sin(angle*π /180)+cos(angle*π /180)))

Dx = Ox+(length/2*(-cos(angle*π /180)+sin(angle*π /180)))

Dy = Oy+(length/2*(+sin(angle*π /180)+cos(angle*π /180)))

Если координаты левого верхнего угла рабочей области не (0,0), то ко всем точкам необходимо прибавить эти координаты.

Отрисовка квадрата производится в следующей последовательности:

  • Установить цвет линии в LineColor.

  • Установить цвет заливки в FillColor.

  • Отрисовка полигона ABCD.

  • Если нужно рисовать diagonals, то рисовать линии AC и BD.

Связанное с объектом действие.

В данной работе необходимо посчитать площадь и периметр квадрата. Вычисления проводятся по следующим зависимостям:

Perimeter = Length*4

Square = Length2

Результаты выводятся либо на рабочей области, либо в отдельном окне.