Пример 15.1.

Создать программу рисования в форме графика функции с поясняющим текстом. Проект – приложение. Функция – синус. Программа предусматривает три варианта рисования графика:

  • Точками с помощью свойства Pixels (график в левой верхней части окна).
  • Линиями с использованием метода LineTo (график в нижней левой части окна).
  • С использованием компонента TChart (в правой части окна).

Окно формы в начале конструирования содержит компоненты:

  • Кнопка Button1 (Рисовать). Она вызывает построение графиков в окне.
  • Chart1. Компонент построения графиков из страницы Additional.

paskal83

Для подготовки Chart к работе используется свойства этого компонента, определенные в модуле TAEngine. В список uses его надо добавить, по умолчанию его нет.

Листинг модуля формы

unit Prg_15_1_;

interface

uses

Classes, SysUtils, LResources, Forms, Controls, Graphics, Dialogs, ExtCtrls,

TAGraph, TASeries, Buttons, StdCtrls, TAEngine;

type

{ TForm1 }

TForm1 = class(TForm)

Button1: TButton;

Chart1: TChart;

procedure Button1Click(Sender: TObject);

private

s:TSerie;

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);

var

i,amp,x01,y01,x02,y02,imax,t ,func:integer;

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:=-round(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:=-round(amp*sin(2*pi/imax*i));

Canvas.LineTo(x02+i,y02+round(func));

end;

// Рисуем график в компонентеTChart

s:=TSerie.Create(Chart1);

s.ShowLines:=true;

s.ShowPoints:=false;

s.Title:=’Мой график’;

chart1.AddSerie(s);

for i:=0 to imax*t do

begin

func:=round(amp*sin(2*pi/imax*i));

s.AddXY(i,func, ‘График’,clRed);

end;

end;

initialization

{$I prg_15_1_.lrs}

end.

Ниже представлено окна работающего  приложения проекта. Оно возникает при нажатии кнопки Рисовать. В окне видны графики одной и той же функции, построенные разными способами:

  • С использованием свойства Pixels (вверху слева).
  • С использованием метода LineTo (внизу слева).
  • С помощью компонента TChart (справа).

paskal84

Выводы

Для рисования используется класс 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, позволяющий автоматизировать значительную часть операций.

TwitterSEO CommunityВаау!News2.ruChippKoricaSMI2Google BookmarksDiggI.uaЗакладки YandexLinkstoreMyscoopCommunizmRu-marksWebmarksRuspaceLinkomaticKli.kzWeb-zakladkaZakladok.netRedditdeliciousMa.gnoliaTechnoratiSlashdotYahoo My WebБобрДобр.ruMemori.rurucity.comМоёМесто.ruMister Wong



Copyright © 2009-2010 Программирование на паскале.