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;
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 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);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> OY
|
|||
|
Canvas->MoveTo(w2,0);
|
|||
|
Canvas->LineTo(w2,ClientHeight);
|
|||
|
Canvas->MoveTo(w2-3,10);
|
|||
|
Canvas->LineTo(w2,0);
|
|||
|
Canvas->LineTo(w2+3,10);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
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);
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>
|
|||
|
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");
|
|||
|
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
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);
|
|||
|
}
|
|||
|
}
|
|||
|
//---------------------------------------------------------------------------
|