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

Twitter SEO Community Ваау! News2.ru Chipp Korica SMI2 Google Bookmarks Digg I.ua Закладки Yandex Linkstore Myscoop Communizm Ru-marks Webmarks Ruspace Linkomatic Kli.kz Web-zakladka Zakladok.net Reddit delicious Ma.gnolia Technorati Slashdot Yahoo My Web БобрДобр.ru Memori.ru rucity.com МоёМесто.ru Mister Wong



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