praktika-cpp-2PO07/2/Unit1.cpp

82 lines
2.3 KiB
C++
Raw Normal View History

2024-03-02 18:17:55 +02:00
//---------------------------------------------------------------------------
#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);
}
}
//---------------------------------------------------------------------------