Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

C++Builder. Учебный курс

.pdf
Скачиваний:
15
Добавлен:
15.11.2022
Размер:
9.54 Mб
Скачать

центрировать относительно точки (х,у). Ниже приводится текст такой функции.

f I рафик функции

[ Г Ц Э Д

Рис. 6.3. Вывод обозначений масштабной сетки

- В заголовочном файле формы в секции p r i v a t e определе­ ния класса TForm l объявите метод TextOutXY:

void __fastcall T e x t O u t X Y (int x, int y, int h o r i z , int v e r t , double u, int c ) ;

- В файле модуля формы определите метод TextOutXY:

void __fastcall

T F o r m l : : T extO utX Y (int x, int y, int

h o r i z , int v e r t ,

double u, int c)

{

int h e i g h t , w i d t h ; A n s i S t r i n g s t r ;

s t r = F l o a t T o S t r F ( u , f f F i x e d , 2, c ) ; w i d t h = C a n v a s - > T e x t W i d t h ( s t r ) ;

h e i g h t = C a n v a s - > T e x t H e i g h t ( s t r ) ; if ( h o r i z == 1) x -= w i d t h / 2;

if ( h o r i z == 2) x -= w i d t h ; if ( v e r t == 1) у -= h e i g h t / 2 ; if ( v e r t == 2) у -= h e i g h t ;

}

В функцию T extO utX Y при вызове передаются следующие параметры:

-х ,у - координаты точки, относительно которой будет вы­ равниваться текст;

-h o r i z - параметр, определяющий горизонтальное вырав­ нивание текста:

-h o r i z =0 - текст будет смещен вправо относительно за­ данной точки, т.е. используется выравнивание, принятое в стан­ дартной функции T e x tO u t;

- h o r i z =l - текст центрируется относительно заданной точки;

-h o r i z = 2 - текст будет смещен влево относительно задан­ ной точки;

ve r t - параметр, определяющий вертикальное выравни­ вание текста:

-v e r t =0 - текст будет смещен вниз относительно заданной точки, т.е. используется выравнивание, принятое в стандартной функции T e x tO u t;

-

v e г t =1

-

текст центрируется относительно заданной точки;

-

v e r t =2

-

текст будет смещен вверх относительно задан­

ной точки;

-и - переменная, значение которой выводится на экран;

-с - число цифр после десятичной точки.

Для преобразования вещественного значения в строку ис­ пользуется функция F lo a tT o S tr F , в которой указывается коли­

чество цифр после десятичной точки (параметр с).

-Д ополните функцию G rid двумя дополнительными пара­ метрами целого типа с х и су, которые будут определять число

цифр после десятичной точки соответственно для осей х и у.

- Измените объявление функции G rid в заголовочном классе.

- Измените вызов функции G r id в обработчике события Оп-

P a i n t формы.

- Вставьте вызовы T extO utX Y в функцию G rid . Например, в первом цикле при построении горизонтальных линий вызов функции T extO utX Y будет осуществляться следующим образом:

f o r (i= 0,Y = y2,y= ym in;

i< = ny;

i+ + ,Y = y 2 -i* h ,y + = h y )

{

Y );

 

C anvas- >M oveTo(xl,

 

C an v as-> L in eT o (x 2 ,

Y );

 

T extO utX Y (xl-4, Y,

2, 1, y,

c y ) ;

}

 

 

-Запустите приложение и проверьте правильность работы программы.

Примечание. Вы можете изменить значение разделителя де­ сятичной точки, устанавливая символ D e c im a lS e p a r a to r , на­ пример, в функции T extO utX Y перед вызовом функции

F lo a tT o S tr F или в обработчике события O n P a in t формы запи­ сать оператор:

D e c im a lS e p a ra to r =

6.4. Построение графика функции

Нам осталось самое важное - построить график функции. Для построения сетки графика дополним класс T F orm l формы новой функцией, имеющей один параметр п - число значений, в которых будет вычисляться искомая функция. Таким образом, мы будем строить график функции по точкам, соединяя соседние точки пря­ мой линией. При небольших значениях п график нашей функции будет представлять ломаную линию, при увеличении график будет становиться все более гладким. При этом надо учитывать, что па­ раметр п не должен быть больше, чем число пикселов по горизон­ тали, которое определяется у нас в программе параметром шх.

- В заголовочном файле формы объявите в секции p r i v a t e

функцию G rap h :

void __fastcall G r a p h ( i n t n ) ;

- В

файле реализации

модуля формы определите функцию

G rap h .

 

 

 

 

 

 

void __fastcall

T F o r m l: : G r a p h (int n)

{

i ,

X,

Y;

 

 

 

int

 

 

 

double

hx,

hy,

dx,

x,

y;

C a n v a s - > P e n - > W id th = 1;

C a n v a s - > P e n - > C o lo r

=

clR e d ;

hx = m x / ( x m a x - x m i n ) ;

 

hy = m y / ( y m a x - y m i n ) ;

 

dx = (x m a x - x m in ) /n ;

 

 

у = s i n ( x m i n ) ;

 

 

 

Y =

y l

+

(ym ax - y)*hy;

 

C a n v a s - > M o v e T o ( x l, Y ) ;

for

( i = 0 / x=xmin; i<=n; i++,x+=dx)

{

у = s i n ( x ) ;

X= x l + ( x - x m i n ) * h x ;

Y= y l+ ( y m a x - y ) * h y ;

C an v a s - > L in e T o (X , Y ) ;

}

}

- Самостоятельно разберитесь с назначением каждого опера­ тора функции.

- В обработчике события O n P a in t формы запишите опера­

тор вызова функции G raph .

-Запустите приложение и проверьте правильность его работы (рис. 6.4).

-Поварьируйте параметром п при вызове функции G raph.

В этом случае вы получите график функции, называемый фигура­ ми Лиссажу.

Фигуры Лиссажу - это замкнутые траектории, прочерчивае­ мые точкой, совершающей одновременно два гармонических ко­ лебания в двух взаимно перпендикулярных направлениях. Впер­ вые изучены французским учёным Ж. Лиссажу. Вид фигур Лисса­ жу зависит от соотношения между периодами (частотами), фазами и амплитудами обоих колебаний. В простейшем случае равенства обоих периодов фигуры Лиссажу представляют собой эллипсы, которые при разности фаз 0 или я вырождаются в отрезки прямых, а при разности фаз л /2 и равенстве амплитуд превращаются в ок­ ружность. Если периоды соотносятся между собой как целые чис­ ла, то через промежуток времени, равный наименьшему кратному обоих периодов, движущаяся точка снова возвращается в то же положение - получаются фигуры Лиссажу более сложной формы.

4. Написать программу, которая строит график функции, за­ данной таблично.

7. ИСПОЛЬЗОВАНИЕ КОМПОНЕНТА TCHART ДЛЯ ПОСТРОЕНИЯ ДИАГРАММ И ГРАФИКОВ

В этой главе рассматриваются примеры использования ком­

понента T C h a rt для построения диаграмм и графиков.

7.1. Общие сведения о компоненте TChart

Компонент T C h a rt позволяет строить различные диаграммы и графики, которые выглядят очень эффектно. Компонент имеет множество свойств, методов и событий, поэтому ограничимся рас­ смотрением только основных характеристик T C h a rt. А с осталь­ ными вы можете ознакомиться во встроенной справке C++Builder или просто опробовать их, экспериментируя с диаграммами.

Компонент T C h a rt является контейнером объектов S e r i e s

типа T L in e S e r ie s , T P i e S e r i e s и т.д. - серий данных, харак­ теризующихся различными стилями отображения. Каждый компо­ нент может включать несколько серий. Например, если вы хотите отображать график, то каждая серия будет соответствовать одной кривой на графике.

-Разместите на форме компонент T C h a rt

и познакомьтесь

со свойствами компонента.

 

Большинство свойств компонента T C h a rt

удобнее изменять

с использованием Р е д а к т о р а Д иаграм м , который представляет многостраничное окно и позволяет установить все свойства диа­

грамм. Вызов Р е д а к т о р а

Д иаграм м

возможен также двойным

щелчком на компоненте

T C h a rt или

щелчком на

нем правой

кнопкой мыши и выбором команды E d i t C h a r t

в контек­

стном меню.

 

 

 

- Сделайте двойной щелчок на верхнем компоненте T C h art.

Вы попадете

в

окно Р ед ак то р а Диаграмм (рис. 7.1) на

страницу C h a r t,

которая имеет несколько закладок. Прежде всего

вас будет интересовать на ней закладка S e r ie s .

Editing Chartl

 

 

Chart

Series

Data

Export

Print

Series ^General

Axis

Titles

J.egend Panel__ Pagr>g Wals 3D

Q

View Senes Names

 

 

Add...

I I

Close |

Рис. 7.1. Редактор Диаграмм, страница C hart, закладка S e rie s

Ниже перечислены основные закладки страницы C hart и их назначение.

- Закладка T i t l e s позволяет задать заголовок диаграммы.

-Закладка L eg en d позволяет задать параметры отображения легенды диаграммы (списка обозначений) или вообще убрать ее с экрана.

-Закладка P a n e l определяет вид панели, на которой ото­ бражается диаграмма.

-Закладка 3D дает возможность изменить внешний вид диа­ граммы: наклон, сдвиг, толщину и т.д.

Страница S e r i e s , также имеющая ряд закладок, дает воз­ можность выбрать дополнительные характеристики отображения серии.

- В частности, для круговой диаграммы на закладке F o rm at полезно включить опцию C i r c l e d P ie , которая обеспечит при любом размере компонента C h a r t отображение диаграммы в виде круга.

- Н а закладке M arks кнопки группы S t y l e определяют, что будет написано на ярлычках, относящихся к отдельным сегментам диаграммы: V a lu e - значение, P e r c e n t - проценты, L a b e l - название данных и т.д.

- На закладке G e n e r a l можно установить шаблон процентов или значений, обеспечивающий отображение только целых значе­ ний.

7.2. Построение диаграмм

Ниже рассматривается пример построения диаграммы с ис­ пользованием компонента T C h a rt.

- Разместите на форме компонент T C h a rt.

- Сделайте двойной щелчок на компоненте T C h a rt.

- На странице C h a r t выберите закладку S e r i e s и щелкните на кнопке Add - добавить серию.

Вы попадете в окно (рис. 7.2), в котором можно выбрать тип диаграммы или графика.

- Выберите P ie - круговую диаграмму.

- Посмотрите, что изменилось в заголовочном файле формы после выполнения этой команды.

Вы можете, если хотите, добавить на этот компонент C h art еще одну тождественную серию, нажав на закладке S e r i e s стра­ ницы C h a r t кнопку C lo n e , а затем для этой новой серии нажать кнопку C hange (изменить) и выбрать другой тип диаграммы, на­