Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Лабник по СПО

.pdf
Скачиваний:
9
Добавлен:
05.06.2015
Размер:
1.59 Mб
Скачать

Процедура LineTo(X, Y) чертит линию от текущего положения до точки (X,Y). Процедура MoveTo(X, Y) перемещает перо в положение (X,Y).

Процедура Pie(X1, Y1, X2, Y2, X3, Y3, X4, Y4) чертит сектор эллипса в охватывающем прямоугольнике (X1,Y1) - (X2,Y2). Начало дуги лежит на пересечении эллипса и луча, проведённого из центра в точку (X3,Y3), а конец - на пересечении эллипса и луча, проведённого из центра в точку (X4,Y4). Начало и конец дуги соединяются прямыми линиями с центром.

Процедура Polygon(Points) чертит многоугольник по точкам, заданным в массиве Points. Конечная точка соединяется с начальной, и многоугольник заполняется кистью. Процедура Polyline(Points) чертит ломаную линию по точкам, заданным в массиве Points. Процедура Rectangle(X1, Y1, X2, Y2) чертит и заполняет прямоугольник. X1-Y1 - координаты левого верхнего угла, X2-Y2 - координаты правого нижнего угла.

Процедура Refresh устанавливает в канве шрифт, перо и кисть по умолчанию.

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

Canvas->Brush->Style = bsClear;

или

Canvas.Brush.Style := bsClear;

Процедура RoundRect(X1, Y1, X2, Y2, X3, Y3) чертит и заполняет прямоугольник со скруглёнными углами. X1-Y1 - координаты левого верхнего угла, X2-Y2 - координаты правого нижнего угла. Прямоугольник (X1,Y1) - (X3,Y3) определяет радиус округления углов.

Процедура StretchDraw (Rect, Graphic) рисует и масштабирует изображение Graphic так, чтобы оно поместилось в заданном прямоугольнике Rect.

Функция TextExtent(Text) возвращает ширину и высоту прямоугольника, охватывающего текстовую строку Text.

Функция TextHeight(Text) возвращает высоту прямоугольника, охватывающего текстовую строку Text.

Процедура TextOut(X, Y, Text) выводит текстовую строку Text. Верхний левый угол прямоугольника, охватывающего строку, располагается в точке (X,Y). Метод TextOut обеспечивает вывод текста на поверхность формы или любого графического объекта, имеющего свойство Canvas. Шрифт, который используется для вывода текста, определяется значением свойства Font соответствующего объекта Canvas.

151

PDF created with pdfFactory Pro trial version www.pdffactory.com

Процедура TextRect(Rect, X, Y, Text) выводит текстовую строку Text. Верхний левый угол прямоугольника, охватывающего строку, располагается в точке (X,Y). Если какая-то часть надписи не помещается в прямоугольнике Rect, она отсекается и не будет видна.

Функция TextWidth(Text) возвращает ширину прямоугольника, охватывающего текстовую строку Text.

Структура типа TRect(hx, hy, bx, by) задает размеры прямоугольника через координаты левого верхнего угла (hx, hy) и координаты правого нижнего угла (bx, by).

Рисование с помощью методов объекта Canvas

В процессе разработки свойства объекта Canvas недоступны в окне Object Inspector. Для рисования на объекте Canvas необходимо написать операторы, которые присваивают свойствам Canvas значения и вызывают методы Canvas. Например, чтобы нарисовать на форме голубой прямоугольник, заполненный диагональной жёлтой штриховкой, нужно написать операторы, присваивающие нужные значения и вызывающие соответствующие процедуры.

Procedure TMainForm.Button1Click(Sender: TObject);

Begin

With Canvas Do Begin

Pen.Color:=clBlue;

Brush.Color:=clYellow;

Brush.Style:=bsDiagCross;

Rectangle(10,10,100,100)

End

End;

или

void __fastcall TForm1::Button1Click(TObject *Sender) {Canvas->Pen->Color=clBlue; Canvas->Brush->Color=clYellow; Canvas->Brush->Style=bsDiagCross; Canvas->Rectangle(10,10,100,100);

}

152

PDF created with pdfFactory Pro trial version www.pdffactory.com

Рисование и отображение графических объектов

Приложения ОС Windows могут рисовать или отображать графические объекты. Когда изображение создаётся первый раз, это называется рисованием. Восстановление

изображения после его повреждения при перекрытии другой формой называется отображением, если изображение было сохранено в памяти и скопировано из памяти.

Для понимания разницы между рисованием и отображением проделаем следующий эксперимент. Поместим на форму кнопку и объект типа TImage и введём в обработчик события OnClick операторы.

Procedure TMainForm.Button1Click(Sender: TObject);

Begin

With Canvas Do Begin

Pen.Color:=clBlue;

Brush.Color:=clYellow;

Brush.Style:=bsDiagCross;

Rectangle(10,10,100,100)

End;

With Image1.Canvas Do

Begin

Pen.Color:=clBlue;

Brush.Color:=clYellow;

Brush.Style:=bsDiagCross;

Rectangle(10,10,100,100)

End

End;

или

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Canvas->Pen->Color=clBlue; Canvas->Brush->Color=clYellow; Canvas->Brush->Style=bsDiagCross; Canvas->Rectangle(10,10,100,100); Image1->Canvas->Pen->Color=clBlue; Image1->Canvas->Brush->Color=clYellow; Image1->Canvas->Brush->Style=bsDiagCross;

153

PDF created with pdfFactory Pro trial version www.pdffactory.com

Image1->Canvas->Rectangle(10,10,100,100);

}

Запустим программу, щёлкнем по кнопке. Изображения прямоугольника появятся на форме и на объекте Image1. Свернём форму или перекроем её другой формой и увидим, что рисунок на форме исчез. Нарисованный на форме рисунок существует только в виде изображения и нигде не хранится. Для того чтобы рисунок мог отображаться после его перекрытия, его нужно где-то сохранить. Объект типа TImage сохраняет и отображает помещённое на него изображение после каждого его повреждения. Объект типа TPaintBox, так же как и форма, не хранит и автоматически не отображает помещённое на него изображение.

Если рисунок создавался программой, то его не нужно хранить, его можно повторно нарисовать. Но если рисунок создавал оператор или рисунок был загружен из файла, то для отображения рисунка его нужно сохранить в каком-то графическом объекте и отображать после каждого повреждения, копируя рисунок из объекта.

Рисование с помощью объекта Shape

В процессе разработки свойство Canvas недоступно, а объект Shape доступен, и его можно поместить на форму. Свойства объекта Shape можно задать в окне Object Inspector или в виде операторов, исполняемых в обработчике события формы, например, в событии

OnCreate:

Shape1.Shape:=stRoundRect;

Shape1->Shape=stRoundRect;

Для того чтобы во время разработки изменить цвет и шаблон объекта Shape, следует присвоить свойствам Pen и Brush соответствующие значения. Чтобы открыть свойства объектов Pen и Brush, нужно сделать на них двойной щелчок мышью. Для изменения свойств объекта Shape в процессе работы программы нужно ввести в

обработчик события нажатия кнопки или в обработчик события OnCreate формы

соответствующие операторы

With Shape1 Do Begin

Pen.Color:=clNavy;

Brush.Color:=clLime;

Brush.Style:=bsCross;

Pen.Width:=3;

Shape:=stRoundRect

154

PDF created with pdfFactory Pro trial version www.pdffactory.com

End;

или

Shape1->Pen->Color = clNavy; Shape1->Brush->Color = clNavy; Shape1->Brush->Style = bsCross; Shape1->Pen->Width = 3; Shape1->Shape = stCircle;

Схема приложения, рисующего график переходного процесса

Вид переходной характеристики зависит от схемы звена, схемы подключения источника сигнала и схемы подключения измерителя. Разработаем приложение, рисующее график переходного процесса в колебательном RLC-звене при съёме сигнала с конденсатора (рис.6.1).

R L

 

 

 

 

 

 

 

 

 

 

 

 

 

x(t) = U1(t)

 

 

 

C

 

 

 

y(t) = U2(t)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.6.1. Схема RLC-звена

Переходная характеристика колебательного звена описывается выражением

 

 

eαt

h(t) = (1-

 

 

 

sin(w t + j))×1(t),

 

 

 

 

 

 

0

1- x2 (6.1)

где α = –ξ/Т - коэффициент ослабления; Т - постоянная времени; t - текущее время; ξ -

коэффициент затухания; ω0 - собственная угловая частота колебательного звена; ϕ - фазовый сдвиг.

Значение фазового сдвига и собственной угловой частоты колебательного звена определяются формулами

 

 

1- x2

 

 

 

 

 

j = arctg

 

w =

1- x2

 

 

 

 

 

x

и 0

 

T .

Собственная частота колебательного звена определяется по формуле

f0 = w2p0 .

Период собственных колебаний определяется по формуле

155

PDF created with pdfFactory Pro trial version www.pdffactory.com

τ =1/ f0.

Схема приложения, рассчитывающего параметры колебательного звена и рисующего переходную характеристику, показана на рис.6.2.

19

Расчёт

графика

tтек=tmax

18

Рисование

графика

17

Расчёт

функции

16 Задание

точки

15

Расчёт

графика

1

Начало

2

Начальные

значения и схема

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

22

 

 

 

 

 

?

 

 

 

 

 

 

 

 

 

Да

 

 

 

 

 

 

 

Рисование

 

 

 

 

 

 

 

 

 

Выход

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

координат

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нет

 

 

23

Конец

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

21

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Удаление

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

4

 

 

?

 

 

 

 

 

 

 

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Удалить

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

20

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод

 

 

 

 

 

 

5

 

?

 

 

 

 

 

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

масштаба оси t

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Масштаб

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нет

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нет

 

 

8

 

 

 

 

 

 

 

 

 

Нет

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Параметры

 

 

 

 

 

?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

График

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

14

 

 

 

 

 

 

 

 

 

 

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

Да

 

 

 

 

 

 

 

 

Ввод Т

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

13

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

параметров

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод ω0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

12

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод f0

 

 

 

 

 

 

 

 

Ввод цвета

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

10

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

11

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Ввод τ

 

 

 

 

 

 

 

 

 

Ввод ξ

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.6.2. Схема программы для рисования переходного процесса

в колебательном звене

Работа приложения должна начинаться с вывода начальных значений параметров и рисования схемы звена (блок 2 на рис.6.2).

Затем необходимо проверить наличие команды на закрытие программы (блок 3), команды удаления (блок 4) и команды на изменение масштаба по оси времени (блок 5).

Аргументом в выражении (6.1) является время, функцией - выходное напряжение. При рисовании кривой на экране аргументом является смещение по горизонтальной оси,

156

PDF created with pdfFactory Pro trial version www.pdffactory.com

функцией - смещение по вертикальной оси, измеряемые в пикселях. Следовательно, нужно пересчитать напряжение и время в пиксели (блок 20). Если пользователь не задал масштаб времени, то должен использоваться масштаб, заданный по умолчанию.

После ввода масштаба времени и команды на построение графика необходимо ввести параметры звена (блоки 9 - 14) и затем выполнять расчёт и рисование графика по точкам (блоки 15 - 19). Оси координат должны рисоваться после каждого удаления графика или при изменении масштаба оси времени (блок 22).

Процедура ввода параметров показана как предопределённый процесс, потому что она является сложной подпрограммой. Ввод каждого параметра, кроме проверки корректности вводимых данных, должен сопровождаться проверкой допустимости введённых значений и пересчётом зависимых параметров (блок 8 на рис.6.3).

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

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

157

PDF created with pdfFactory Pro trial version www.pdffactory.com

1

 

 

 

Начало

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Нет

 

2

 

?

Да

 

 

 

3

 

 

 

 

 

 

 

 

 

 

Фокус

 

 

 

 

 

 

 

 

 

Ввод

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

значения

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Присвоение

 

Нет

 

 

 

 

4

 

 

?

 

 

 

 

допустимого

 

 

 

Допустимые

 

 

 

значения

 

 

 

 

 

 

 

 

 

 

 

 

Да

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Расчёт

 

 

 

 

 

 

 

 

 

 

 

 

зависимых

 

 

 

 

 

 

 

 

 

 

 

 

параметров

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

7

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Вывод

 

 

 

 

 

 

 

 

 

параметров

 

 

 

 

 

 

 

 

 

8

Конец

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Рис.6.3. Схема процедуры ввода параметра

Блок 4 на рис.6.3 тоже является предопределённым процессом и должен выполняться по схеме, приведённой на рис.3.9, с проверкой корректности вводимых символов.

Создание проекта

Создаём проект типа VCL Forms Application. Сохраняем проект в подготовленной заранее папке с именем Work5, присваиваем главному модулю имя UnHt, а проекту - имя LC_Ht. Присваиваем главной форме имя fmHt.

Размещаем на форме визуальные объекты в соответствии с рис.6.4. Помещаем на форму пять меток для обозначения параметров и пять редакторов для ввода параметров.

Редакторам присваиваем имена: KciEd, ToEd, WoEd, foEd, tpEd.

158

PDF created with pdfFactory Pro trial version www.pdffactory.com

Рис.6.4. Окно программы для рисования переходного процесса

в колебательном звене

Устанавливаем диалоговое окно ColorDialog1 для выбора цвета линий. Для задания масштаба используем объект ScrollBar1. Рисование электрической схемы можно выполнить с помощью объектов типа TShape при проектировании, но проще нарисовать схему в графическом редакторе и вставить её в объект типа TImage. Поэтому помещаем на форму два объекта типа TImage: ImagShema, для рисования схемы звена и ImageGraf, для рисования графика. В свойство Picture объекта ImagShema вводим рисунок схемы типа bmp. Устанавливаем четыре кнопки с именами: ColorBitBt, GrafBitBt, BitBtCleare и BitBtnClse - для выбора цвета графика, подачи команды на рисование графика, подачи команды на рисование осей координат и для закрытия программы.

Текст программы на языке Delphi

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

Var

fmHt: TfmHt;

a,fi,Kci,Kci1,Wo,fo,T0,tp :Double;

159

PDF created with pdfFactory Pro trial version www.pdffactory.com

tmax,CnSc :Word; PenCol :TColor; Ngr :Byte;

Переменные обозначены следующими символами: Kci - коэффициент затухания; a - коэффициент ослабления; T0 - постоянная времени; Wo - собственная угловая частота колебаний; fo - собственная частота; tp - период собственных колебаний; fi - фазовый сдвиг; PenCol - цвет графика; tmax - длина оси времени; CnSc - цена деления шкалы времени; Ngr - число нарисованных графиков.

Функцию преобразования строки в число заимствуем из работы № 3 (распечатка 3.1). Задаём начальные значения параметров, реализуя блок 2 из рис.6.2:

Procedure TfmHt.FormCreate(Sender: TObject);

Begin

T0:=0.2; Kci:=0.1; Wo:=4.9749;

fi:=1.471; fo:=0.79179; tp:=1.263; tmax:=5; CnSc:=108; Kci1:=Sqrt(1-Kci*Kci); a:=-Kci/T0;

Scale; Application.HintHidePause:=-1

End;

Пока не создана процедура рисования координат Scale, для запуска приложения её нужно закомментировать или не вписывать. Затем можно создать процедуры ввода параметров, т.е. реализовать блоки с 7-го по 14-й из схемы, показанной на рис.6.2. Во всех процедурах, кроме процедуры ввода коэффициента затухания, должно проверяться наличие фокуса, чтобы не пересчитывалась вводимая величина.

Procedure TfmHt.KciEdChange(Sender: TObject);

Begin

Kci:=Vvod(KciEd.Text);

If Kci>0.91 Then Kci:=0.91;

If Kci<0.01 Then Kci:=0.01; a:=-Kci/T0; Kci1:=Sqrt(1-Kci*Kci); fi:=ArcTan(Kci1/Kci); Wo:=Kci1/T0;

160

PDF created with pdfFactory Pro trial version www.pdffactory.com

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]