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);
}
}
//---------------------------------------------------------------------------