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

Class GraphicsClass;

class TForm_Main : public TForm

{

__published: // IDE-managed Components

TPaintBox *PaintBox_Output;

TComboBox *ComboBox_Formula_Coord_X;

TStaticText *StaticText1;

TEdit *Edit_Coord_X_Coeff_a;

TEdit *Edit_Coord_X_Coeff_b;

TStaticText *StaticText2;

TStaticText *StaticText3;

TStaticText *StaticText4;

TComboBox *ComboBox_Formula_Coord_Y;

TEdit *Edit_Coord_Y_Coeff_a;

TEdit *Edit_Coord_Y_Coeff_b;

TStaticText *StaticText5;

TStaticText *StaticText6;

TTrackBar *TrackBar_Scale_X;

TTrackBar *TrackBar_Scale_Y;

TButton *Button_Draw_Axes;

TStaticText *StaticText7;

TStaticText *StaticText8;

TEdit *Edit_Scale_X;

TEdit *Edit_Scale_Y;

TEdit *Edit_Coord_X_Coeff_c;

TStaticText *StaticText9;

TStaticText *StaticText10;

TEdit *Edit_Coord_Y_Coeff_c;

void __fastcall Button_Draw_AxesClick(TObject *Sender);

void __fastcall ComboBox_Formula_Coord_XChange(TObject *Sender);

void __fastcall ComboBox_Formula_Coord_YChange(TObject *Sender);

void __fastcall TrackBar_Scale_XChange(TObject *Sender);

void __fastcall TrackBar_Scale_YChange(TObject *Sender);

void __fastcall Edit_Coord_X_Coeff_aChange(TObject *Sender);

void __fastcall Edit_Coord_X_Coeff_bChange(TObject *Sender);

void __fastcall Edit_Coord_X_Coeff_cChange(TObject *Sender);

void __fastcall Edit_Coord_Y_Coeff_aChange(TObject *Sender);

void __fastcall Edit_Coord_Y_Coeff_bChange(TObject *Sender);

void __fastcall Edit_Coord_Y_Coeff_cChange(TObject *Sender);

void __fastcall FormDestroy(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm_Main(TComponent* Owner);

GraphicsClass* Graphic;

};

//---------------------------------------------------------------------------

extern PACKAGE TForm_Main *Form_Main;

//---------------------------------------------------------------------------

#endif

5. Создайте новый файл File->New->Unit, сохраните его как Unit_graphics_draw.cpp, убедитесь, что файл появился в менеджере проектов View->ProjectManager. Выполните File->Use Unit, подключив Unit_graphics_interface.h. Переключитесь на Unit_graphics_interface.cpp и подключите аналогично Unit_graphics_draw.h

6. Заполните код Unit_graphics_draw.h.

//---------------------------------------------------------------------------

#ifndef Unit_graphics_drawH

#define Unit_graphics_drawH

//---------------------------------------------------------------------------

class GraphicsClass;

class GraphicsClass

{

private:

int xmax, ymax;

int xmid, ymid;

int XKind, YKind;

double X, Y;

double deltaX, deltaY;

double a_x, b_x, c_x, a_y, b_y, c_y;

public:

GraphicsClass();

void DrawAxis();

void DrawGraphic();

void SetXKind(int xkind);

void SetYKind(int ykind);

void SetAX(double ax);

void SetBX(double bx);

void SetCX(double cx);

void SetAY(double ay);

void SetBY(double by);

void SetCY(double cy);

void SetDeltaX(double dX);

void SetDeltaY(double dY);

};

#endif

6. Заполните код Unit_graphics_draw.cpp.

//---------------------------------------------------------------------------

#pragma hdrstop

#include "Unit_graphics_draw.h"

#include "Unit_draw_interface.h"

#include "math.h"

//---------------------------------------------------------------------------

#pragma package(smart_init)

//---------------------------------------------------------------------------

GraphicsClass::GraphicsClass()

{

xmax = 681;

ymax = 465;

xmid = xmax / 2;

ymid = ymax / 2;

deltaX = 10;

deltaY = 10;

a_x = 1;

b_x = 1;

c_x = 0;

a_y = 1;

b_y = 1;

c_y = 0;

XKind = 0;

YKind = 0;

}

//---------------------------------------------------------------------------

void GraphicsClass::DrawAxis()

{

Form_Main->PaintBox_Output->Repaint();

Form_Main->PaintBox_Output->Canvas->MoveTo(1, ymid);

Form_Main->PaintBox_Output->Canvas->LineTo(xmax, ymid);

Form_Main->PaintBox_Output->Canvas->MoveTo(xmid, 1);

Form_Main->PaintBox_Output->Canvas->LineTo(xmid, ymax);

for (int i = 0; i <= xmax / deltaX; i++)

{

Form_Main->PaintBox_Output->Canvas->MoveTo(xmid + i * deltaX, ymid - 1);

Form_Main->PaintBox_Output->Canvas->LineTo(xmid + i * deltaX, ymid + 2);

Form_Main->PaintBox_Output->Canvas->MoveTo(xmid - i * deltaX, ymid - 1);

Form_Main->PaintBox_Output->Canvas->LineTo(xmid - i * deltaX, ymid + 2);

}

for (int i = 0; i <= ymax / deltaY; i++)

{

Form_Main->PaintBox_Output->Canvas->MoveTo(xmid - 1, ymid + i * deltaY);

Form_Main->PaintBox_Output->Canvas->LineTo(xmid + 2, ymid + i * deltaY);

Form_Main->PaintBox_Output->Canvas->MoveTo(xmid - 1, ymid - i * deltaY);

Form_Main->PaintBox_Output->Canvas->LineTo(xmid + 2, ymid - i * deltaY);

}

}

//---------------------------------------------------------------------------