C++Builder. Учебный курс
.pdfцентрировать относительно точки (х,у). Ниже приводится текст такой функции.
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 |
||
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 (изменить) и выбрать другой тип диаграммы, на