
- •12.Списки
- •Interface
- •Implementation
- •13.Модули
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •14.Таблицы
- •Interface
- •Implementation
- •15.Графика, отображение графиков функций
- •Interface
- •Implementation
- •Initialization
- •16.Графика, примитивы
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Initialization
- •17.Графика, растровые изображения и анимация
- •Interface
- •Implementation
- •Initialization
- •Interface
- •Implementation
- •18.Тестирование и отладка
- •19.Квадратное уравнение
- •Interface
- •20.Класс tThread
- •Interface
- •Implementation
- •Interface
- •Implementation
- •Interface
- •Implementation
- •21.Класс tStream
- •Interface
- •Implementation
- •Initialization
- •Interface
- •Implementation
- •Initialization
- •22.Создание в Delphi кроссплатформенного приложения
Interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls, Buttons, TeEngine, Series, TeeProcs, Chart;
type
TForm1 = class(TForm)
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
Chart1: TChart;
Series1: TLineSeries;
procedure BitBtn1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Implementation
{$R *.dfm}
procedure TForm1.BitBtn1Click(Sender: TObject);
var
i,amp,x01,y01,x02,y02,imax,t:integer;
func:real;
begin
imax:=100; // число точек в периоде
t:=3; // число периодов
amp:=70; // амплитуда
x01:=20; // начала координат
x02:=20;
y01:=20+amp;
y02:=y01+2*amp+40;
// Рисуем график с Pixels
Canvas.TextOut(0,0,'График функции с Pixels');
Canvas.MoveTo(x01,y01); // Рисуем ось X
Canvas.LineTo(x01+imax*t,y01);
Canvas.MoveTo(x01,y01+amp); // Рисуем ось Y
Canvas.LineTo(x01,y01-amp);
for i:=0 to imax*t do // Рисуем график
begin
func:=-amp*sin(2*pi/imax*i);
Canvas.Pixels[x01+i,y01+round(func)]:=clBlack;
end;
// Рисуем график с LineTo
Canvas.TextOut(x02,y02-amp-20,'График функции c LineTo');
Canvas.MoveTo(x02,y02); //Рисуем ось X
Canvas.LineTo(x02+imax*t,y02);
Canvas.MoveTo(x02,y02+amp); //Рисуем ось Y
Canvas.LineTo(x02,y02-amp);
for i:=0 to imax*t do //Рисуем график
begin
func:=-amp*sin(2*pi/imax*i);
Canvas.LineTo(x02+i,y02+round(func));
end;
// Рисуем график в компонентеTChart
for i:=0 to imax*t do Chart1.SeriesList[0].AddXY(i,amp*sin(2*pi/imax*i),'',clRed);
end;
Initialization
end.
На рис. 15 .12 представлено окна работающего приложения проекта. Оно возникает при нажатии кнопки График. В окне видны графики одной и той же функции, построенные разными способами:
С использованием свойства Pixels (вверху слева).
С использованием метода LineTo (внизу слева).
С помощью компонента TChart (справа).
рис. 15.12. Окна работающего приложения задачи
Выводы
Для рисования используется класс Canvas (поверхность рисования, или холст).
Многие компоненты имеют свойство Canvas. Например, Form (форма), компонент Image (изображение).
Canvas имеет два инструмента: Pen (перо) для рисования линий, Brush (кисть) для заливки областей.
Pen имеет свойства:
Color - цвет линии, значения с префиксом cl (например, clRed),
Style - тип линии, значения с префиксом ps (например, psSolid, принято по умолчанию),
Width - толщина линии, в пикселах (по умолчанию 1),
Mode - режим взаимодействия с поверхностью холста, значения с префиксом pm (например, pmCopy - писать цветом пера, режим по умолчанию),
Brush имеет свойства:
Color - цвет заливки,
Style - стиль заливки, значения с префиксом bs (Например, bsCross).
Для рисования графиков функций используются свойство TCanvas.Pixel(x,y) и метод TCanvas.LineTo. Второй метод дает более качественный график.
Для построения графиков есть компонент TChart, позволяющий автоматизировать значительную часть операций.