В этом примере синусоидальная кривая рисуется непосредственно на форме. Чтобы предотвратить вывод неполной графики при переключении окон, код ключа для рисования графики вынесен в процесс OnPaint формы.
процедураTForm1.FormPaint(Отправитель:TObject);
вар
х: целое число;
y,a: Двойной;
начинать
Холст.Пен.Ширина:=3;
Canvas.MoveTo(0,Trunc(self.ClientHeight/2));
forx:=0toself.ClientWidthdo
начинать
а:=(х/self.ClientWidth)*2*Pi;
у:=Син(а);
y:=(1-y)*self.ClientHeight/2;
Canvas.LineTo(Trunc(x),Trunc(y));
конец;
конец;
Программа сначала устанавливает ширину кисти в объекте Canvas формы и перемещает начальную точку рисования в позицию (0,Trunc(self.ClientHeight/2)) в форме. Затем преобразуйте значение угла в течение синусоидального периода в значение радиана с помощью оператора a:=(x/self.ClientWidth)*2*Pi в цикле и сохраните результат вычисления синуса в переменной y. Наконец, оператор Canvas.LineTo(Trunc(x),Trunc(y)) в цикле нарисует на форме непрерывную синусоидальную кривую.
Код программы следующий:
единицаUnit1;
интерфейс
использует
Windows, сообщения, SysUtils, варианты, классы, графика, элементы управления, формы,
Диалоги, ExtCtrls, StdCtrls;
тип
TForm1 = класс (TForm)
процедураFormPaint (Отправитель: TObject);
процедураFormResize (Отправитель: TObject);
процедураFormCreate (Отправитель: TObject);
частный
{Частные декларации}
общественный
{Публичные декларации}
конец;
вар
Форма1:ТФорма1;
выполнение
{$R*.dfm}
процедураTForm1.FormPaint(Отправитель:TObject);
вар
х: целое число;
y,a: Двойной;
начинать
Холст.Пен.Ширина:=3;
Canvas.MoveTo(0,Trunc(self.ClientHeight/2));
forx:=0toself.ClientWidthdo
начинать
а:=(х/self.ClientWidth)*2*Pi;
у:=Син(а);
y:=(1-y)*self.ClientHeight/2;
Canvas.LineTo(Trunc(x),Trunc(y));
конец;
конец;
процедураTForm1.FormResize(Отправитель:TObject);
начинать
Обновить;
конец;
процедураTForm1.FormCreate(Отправитель:TObject);
начинать
self.DoubleBuffered:=true;
//Предотвращаем мерцание графики
конец;
конец.
Сохраните файл и нажмите F9, чтобы запустить программу. Во время работы программы на форме автоматически рисуется синусоидальная кривая, а результаты запуска показаны на рисунке 1.
Рис. 1. Результаты запуска программы
Изучив эту программу, вы сможете рисовать не только синусоидальные кривые, но и различные кривые, такие как косинусоидальные и касательные, для облегчения научных исследований.