Карандаш используется при вызове методов рисования: LineTo, Arc, RectAngle и др. Для перемещения карандаша без рисования используется метод MoveTo (Переместить к)
У холста есть свойство Brush - кисть, которое определяет, фон и заполнение фигур на холсте. Этот объект имеет в свою очередь следующие свойства:
1) Color - цвет заполения;
2) Style - шаблон заполнения (штриховка).
Имеются методы рисования заполненных фигур, при рисовании которых и используется Brush. Например, FillRect (закрашенный прямоугольник).
Программа "Кривые Лиссажу":
1) При сложении двух гармонических сигналов в зависимости от отношения частот сигналов и сдвига фаз между ними наблюдаются кривые, которые называются кривые Лиссажу. Сигналы задаются:
x = A*Sin(F1*t + W1)
y = A*Sin(F2*t + W2)
2) Создайте проект Lissagu;
3) На форму поместите как на рис. 6 компоненты:
а) Image1;
б) SpinEdit1 (частота сигнала 1);
в) SpinEdit2 (фаза сигнала 1);
г) SpinEdit3 (частота сигнала 2);
д) SpinEdit4 (фаза сигнала 2); е) четыре метки Label1 (F1), Label2 (W1), Label3 (F2), Label4 (W2).
Рисунок 6 – Расположение компонентов
4) В разделе private описания класса TForm1 поместите необходимые для построения фигур переменные:
n : integer; //число точек на периоде
F1, //частота сигнала 1
F2, // сигнала 2
W1, //фаза сигнала 1
W2 : real; // сигнала 2
Xmin, //min значение сигнала по OX
Xmax, //max по OX
Ymin, //min по OY
Ymax : real; //max по OY
gXmin, //min значение координаты по OX
gXmax, //max по OX
gYmin, //min по OY
gYmax : integer; //max по OY
h : real; //шаг аргумента сигнала по оси OX
5) В обработчике события OnActivate (Активизация) формы укажите следующие действия по инициализации переменных и начальном изображении фигур:
{границы аргументов функций}
Xmin := - 1.2;
Xmax := - Xmin;
Ymin := - 1.2;
Ymax := - Ymin;
{границы графических координат}
gXmin := 0;
gXmax := Image1.Width;
gYmin := 0;
gYmax := Image1.Height;
{шаг по оси OX}
n := 200;
h := 2 * Pi /n;
DrawLissagu;
6) Создайте две функции для получения сигналов:
//функция, определяющая гармонический сигнал 1
function TForm1.Signal1(t : real): real;
begin
Result := sin(F1 * t) + W1;
end;
//функция, определяющая гармонический сигнал 2
function TForm1.Signal2(t : real): real;
begin
Result := sin(F2 * t) + W2;
end;
7) При рисовании приходится переходить от значений функции к координатам на экране. Для этого создайте следующие функции масштабирования:
//функция масштабирования по оси X
function TForm1.poX(x : real): integer;
begin
Result := gXmin + Trunc((x - Xmin)*
(gXmax - gXmin)/(Xmax - Xmin));
end;
//функция масштабирования по оси Y
function TForm1.poY(y : real): integer;
begin
Result := gYmin + Trunc((y - Ymin)*
(gYmax - gYmin)/(Ymax - Ymin));
end;
8) Создайте процедуру для рисования фигур:
procedure TForm1.DrawLissagu;
var
i : integer;
t, x, y : real;
begin
{получаем значения частот и фаз}
F1 := SpinEdit1.Value;
W1 := SpinEdit2.Value / 100;
F2 := SpinEdit3.Value;
W2 := SpinEdit4.Value / 100;
with Image1.Canvas do begin
{белый фон поля рисунка}
Pen.Color := clWhite;
Brush.Color := clWhite;
Rectangle(0, 0, Width, Height);
{построение осей координат}
Pen.Color := clBlack;
Pen.Style := psDashDot;
{ось OX}
MoveTo(poX(Xmin), poY(0));
LineTo(poX(Xmax), poY(0));
{ось OY}
MoveTo(poX(0), poY(Ymin));
LineTo(poX(0), poY(Ymax));
{построение графика функций}
Pen.Style := psSolid;
t := 0;
x := Signal1(t);
y := Signal2(t);
MoveTo(poX(x), poY(y));
for i := 1 to n do begin
t := t + h;
x := Signal1(t);
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.