Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
РГз Кадыр.doc
Скачиваний:
1
Добавлен:
01.03.2025
Размер:
716.8 Кб
Скачать

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 -- График функции