82 lines
2.3 KiB
C++
82 lines
2.3 KiB
C++
//---------------------------------------------------------------------------
|
|
|
|
#include <vcl.h>
|
|
#include "Math.h"
|
|
#pragma hdrstop
|
|
|
|
#include "Unit1.h"
|
|
//---------------------------------------------------------------------------
|
|
#pragma package(smart_init)
|
|
#pragma resource "*.dfm"
|
|
TForm1 *Form1;
|
|
//---------------------------------------------------------------------------
|
|
__fastcall TForm1::TForm1(TComponent* Owner)
|
|
: TForm(Owner)
|
|
{
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
float function(int i) {
|
|
|
|
return (0.1*sqrt(12*i)+log10(i+7));
|
|
}
|
|
|
|
int step = 15;
|
|
|
|
void __fastcall TForm1::FormPaint(TObject *Sender)
|
|
{
|
|
|
|
int w2 = ClientWidth/2;
|
|
int h2 = ClientHeight/2;
|
|
TRect aRect = Rect(0,0,ClientWidth,ClientHeight);
|
|
Canvas->Brush->Color=0xffffff;
|
|
Canvas->FillRect(aRect);
|
|
Canvas->Pen->Color=0x00;
|
|
//Ñòðåëêà OX
|
|
Canvas->MoveTo(0,h2);
|
|
Canvas->LineTo(ClientWidth,h2);
|
|
Canvas->MoveTo(ClientWidth-10,h2-3);
|
|
Canvas->LineTo(ClientWidth,h2);
|
|
Canvas->LineTo(ClientWidth-10,h2+3);
|
|
//Ñòðåëêà OY
|
|
Canvas->MoveTo(w2,0);
|
|
Canvas->LineTo(w2,ClientHeight);
|
|
Canvas->MoveTo(w2-3,10);
|
|
Canvas->LineTo(w2,0);
|
|
Canvas->LineTo(w2+3,10);
|
|
//Åäèíè÷íûé îòðåçîê
|
|
Canvas->MoveTo(w2+10+step,h2-2);
|
|
Canvas->LineTo(w2+10+step,h2+2);
|
|
Canvas->MoveTo(w2-2,h2-10-step);
|
|
Canvas->LineTo(w2+2,h2-10-step);
|
|
//Ïîäïèñè îñåé
|
|
int ht = Canvas->TextHeight("0");
|
|
int wt = Canvas->TextWidth("X");
|
|
Canvas->TextOutA(w2+2,h2-ht,"0");
|
|
Canvas->TextOutA(ClientWidth-12,h2-ht-2,"X");
|
|
Canvas->TextOutA(w2+6,2,"Y");
|
|
Canvas->TextOutA(w2+7+step,h2-ht,"1");
|
|
Canvas->TextOutA(w2+2,h2-step-2*ht,"1");
|
|
//Ãðàôèê
|
|
Canvas->MoveTo(w2,h2+function(0));
|
|
Canvas->Pen->Color=0x0000ff;
|
|
for(int i=1; i<ClientWidth; i+=2) {
|
|
Canvas->LineTo(i*step+w2,-function(i)*step+h2);
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|
|
|
|
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
|
|
TShiftState Shift)
|
|
{
|
|
if(((int)Key)==VK_LEFT) {
|
|
step -= 10;
|
|
FormPaint(this);
|
|
}
|
|
if(((int)Key)==VK_RIGHT) {
|
|
step += 10;
|
|
FormPaint(this);
|
|
}
|
|
}
|
|
//---------------------------------------------------------------------------
|