- •Введение
- •Задание 1
- •Постановка задачи
- •1.2 Краткие теоретические сведения
- •1.3 Выполнение задания
- •1.4 Выводы
- •Задание 2
- •2.1 Постановка задачи
- •2.2 Краткие теоретические сведения
- •2.3 Выполнение задания
- •Результат работы программы (см Рисунок 2.6)
- •2.4 Вывод
- •3.1 Постановка задачи
- •3.2 Краткие теоретические сведения
- •3.3 Выполнения задания
- •3.4 Вывод
- •4.1 Постановка задачи
- •4.2 Краткие теоретические сведения
- •4.3 Выполнение задания
- •Результат работы программы линейной интерполяции (см Рисунок 4.1)
- •4.4 Вывод
- •Заключение
2.3 Выполнение задания
Для того чтобы создать график необходимо разместить компонент TChart на форме или воспользоваться мастером
Рисунок 2.1 Заготовка графика в форме
После двойного щелчка мыши по этой заготовке, будет произведен переход в редактор графика. В среде этого редактора можно установить свойства графика и его серий.Для нового графика первой всегда показывается закладка Chart и для страницы Chart - закладка Series (см Рисунок 2.2)
Рисунок 2.2 --Редактор графика
Каждая из закладок на странице Chart предназначена для установки параметров того или иного компонента графика (см. Рисунок 2.3)
Рисунок 2.3 --Редактор графика, окно установки свойств осей
После выбора типа серии в график добавляется компонент, дочерний от базового типа TChartSeries - TLineSeries, TBarSeries, TPieSeries и т.д. (см Рисунок 2.5)
Рисунок
2.5 --Редактор графика, список серии
графика
Исходный код программы:
void __fastcall TFormMain::btOKClick(TObject *Sender)
{
double X0, XF, DX;
X0 = StrToFloat(edX0->Text);
XF = StrToFloat(edXF->Text);
DX = StrToFloat(edDX->Text);
double F, X = X0;
Series1->Clear();
while (X < XF)
{
F = func(X);
Series1->AddXY(X, F, "", clTeeColor);
X += DX;
}
}
double func(double x)
{
return(x-1)*(x+2)*(x-4)*(x-4)*x;}
Результат работы программы (см Рисунок 2.6)
Рисунок 2.6 –График функции
2.4 Вывод
Научились строить графики функции с использованием TChart.
Задание 3
Построение графиков функции с использованием пакета C++ Builder с использованием класса TCanvas.
3.1 Постановка задачи
Разработать прикладное программное обеспечение, для расчета функции и построение ее графика с использование класса TCanvas.
3.2 Краткие теоретические сведения
Canvas обеспечивает пространство (холст, канву) для создания, хранения и модификации графических объектов. TCanvas является основой графической подсистемы Delphi. Канва обеспечивает:
3.3 Выполнения задания
Исходный код программы:
void __fastcall TForm1::PaintBox1Paint(TObject *Sender)
{
{
int i;
float LY, LX, Ymax, Ymin, Y, Xmin, Xmax, MasX, X, dX, MasY, PY, PX;
Xmin=-5;
Xmax=5;
dX=0.1;
// выделяем область, на которой будем рисовать
// (при этом оставив небольшие поля по краям)
LX=PaintBox1->Width-50;
LY=PaintBox1->Height-30;
//примем ориентировочные значения максимума и минимума
// (понадобятся для выделения максимума и минимума функции)
Ymax=-100;
Ymin=100;
//устанавливаем голубой цвет кисти и рисуем прямоугольник
PaintBox1->Canvas->Pen->Color=clBlue;
PaintBox1->Canvas->Rectangle(50,40,LX,LY);
//устанавливаем серый цвет кисти (прерывистая линия)
PaintBox1->Canvas->Pen->Color=clGray;
PaintBox1->Canvas->Pen->Style=psDash;
//циклически прорисовываем девять линий градации
for (i=1;i<=9;i++)
{
PaintBox1->Canvas->MoveTo(50+LX/11*i,40);
PaintBox1->Canvas->LineTo(50+LX/11*i,LY);
}
//циклически выводим значения возле прорисованной линии
for (i=0;i<=10;i++)
{
AnsiString S1 = FloatToStrF(Xmin+((Xmax-Xmin)/10)*i,ffFixed,5,2);
PaintBox1->Canvas->TextOutA(50+LX/11*i-10,LY+5,S1);
}
//циклически прорисовываем девять линий градации
for (i=1;i<=9;i++)
{
PaintBox1->Canvas->MoveTo(50,50+LY/11*i-10);
PaintBox1->Canvas->LineTo(LX,50+LY/11*i-10);
}
//устанавливаем красный цвет кисти (сплошная линия)
PaintBox1->Canvas->Pen->Style=psSolid;
PaintBox1->Canvas->Pen->Color=clRed;
//определяем масштаб по оси X
if ((Xmax-Xmin)==0) MasX=LX-50;
else MasX=(LX-50)/(Xmax-Xmin);
//делаем рисунок видимым
PaintBox1->Visible=true;
//циклически рассчитываем значения функции и определяем
// ее максимум и минимум)
for (X=Xmin;X<=Xmax;X+=dX)
{
Y=(X-1)*(X+2)*(X-4)*(X-4);
if(Ymax<Y) Ymax=Y;
if(Ymin>Y) Ymin=Y;
}
//определяем масштаб по оси Y
MasY=(LY-40)/(Ymax-Ymin);
//циклически выводим числовые значения возле прорисованных
// градационных линий
for (i=0;i<=10;i++)
{
AnsiString S = FloatToStrF(Ymax-((Ymax-Ymin)/10)*i,ffFixed,5,2);
PaintBox1->Canvas->TextOutA(20,35+LY/11*i,S);
}
// и вот теперь переходим непосредственно к рисованию
PaintBox1->Canvas->MoveTo(50,LY-(Ymin*(-1)+((Xmin-1)*(Xmin+2)*(Xmin-4)*(Xmin-4)))*MasY);
for (X=Xmin;X<=Xmax;X+=dX)
{
Y=(X-1)*(X+2)*(X-4)*(X-4);
PY=LY-(Ymin*(-1)+Y)*MasY;
PX=X*MasX+50;
PaintBox1->Canvas->LineTo(PX-Xmin*MasX,PY);
}}
}
Запустите ваше приложение и щелкните на его кнопке. Вы увидите, что можете загрузить графический файл и он отобразится на форме (см. Рисунок 3.1).
Рисунок 3.1 -- График функции
