- •1 Компьютерная система анализа ортогональной векторкардиограммы
- •Компьютерная система реовазографии
- •Цель работы
- •3 Компьютерная система анализа реоэнцефалограмм
- •Цель работы
- •4 Компьютерная система анализа реограмм
- •4.1 Цель работы
- •4.2 Методические указания по организации самостоятельной работы студента
- •Пример программы построения векторной петли и расчета ее площади
- •Приложение б
- •Приложение д
Пример программы построения векторной петли и расчета ее площади
program Project1;
uses
Forms,
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2};
{$R *.res}
begin
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.Run;
end.
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, //
Dialogs, Grids, StdCtrls; // Подключение стандартных модулей
type
TForm1 = class(TForm)
Edit1: TEdit;
Label1: TLabel;
StringGrid1: TStringGrid;
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
{Const
koef : integer = 10;}
var
Form1: TForm1;
Mp : array[1..50] of TPoint; // Создание массива переменных для ввода координат X, Y
Mindex : integer; // Количество опорных точек, высчитывается автоматически
koef : integer; // коэффициент масштабирования
implementation
uses Unit2;
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject); // процедура инициализации переменных
var
i : integer;
st : string;
begin
koef:=10;
StringGrid1.Cells[1,0]:='X';
StringGrid1.Cells[2,0]:='Y';
for i:=1 to 50 do StringGrid1.Cells[0,i]:=IntToStr(i);
Mindex:=0;
if ParamCount>0 then
begin // проверка ключей командной строки
for i:=1 to ParamCount do
if copy(ParamStr(i),1,2)='/k' then
begin
st:=ParamStr(i);
delete(st,1,3);
koef:=StrToInt(st);
end;
end;
end;
procedure TForm1.Button1Click(Sender: TObject); // Процедура построения контуров объекта по заданным точкам
var
i : integer;
begin
Form2.Show; // Отображение рисунка на экране монитора
for i:=1 to 50 do
begin
if (StringGrid1.Cells[1,i]='') or (StringGrid1.Cells[2,i]='') then
begin
Mindex:=i-1;
break;
end;
Mp[i].X:=StrToInt(StringGrid1.Cells[1,i]);
Mp[i].Y:=StrToInt(StringGrid1.Cells[2,i]);
end;
form2.Image1.canvas.Brush.Color:=clBlack;
for i:=2 to mindex do
begin
form2.Image1.Canvas.MoveTo(Mp[i-1].X*koef,Mp[i-1].Y*koef); // Отрисовка изображения
form2.Image1.Canvas.LineTo(Mp[i].X*koef,Mp[i].Y*koef);
// form2.Image1.Canvas.Pixels[Mp[i].X,Mp[i].Y];
// form2.Image1.Canvas.LineTo(100,100);
end;
form2.Image1.Canvas.MoveTo(Mp[mindex].X*koef,Mp[mindex].Y*koef);
form2.Image1.Canvas.LineTo(Mp[1].X*koef,Mp[1].Y*koef);
form2.Image1.Refresh; // Перерисовать изображение
end;
end.
unit Unit2;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls; // Подключение стандартных модулей
type
TForm2 = class(TForm)
Image1: TImage;
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); // заливка рисунка черным цветом
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form2: TForm2;
MAr : integer; // Площадь объекта
implementation
Uses Unit1;
{$R *.dfm}
procedure TForm2.Image1MouseDown(Sender: TObject; Button: TMouseButton; // процедура закрашивания объекта в черный цвет и расчет закрашенной площади
Shift: TShiftState; X, Y: Integer);
var
i,i1 : integer;
begin
Image1.Canvas.FloodFill(X,Y,clBlack, fsBorder);
Application.ProcessMessages;
mAr:=0;
for i1:=0 to Image1.Height-1 do // Вычисление закрашенной площади
for i:=0 to Image1.Width-1 do
begin
if Image1.Canvas.Pixels[i,i1]=clBlack then
begin
inc(mAr);
Form2.Caption:='Площадь = '+IntToStr(mAr div sqr(koef))+' точек';
Application.ProcessMessages; // Процедура обработки сообщений системы
end;
end;
Form1.Edit1.Text:=IntToStr(mAr div sqr(koef)); // Отображение результата расчета площади.
end;
end.