praktika-cpp-2PO07/Редактор/Unit1.cpp

143 lines
3.9 KiB
C++
Raw Normal View History

2024-03-02 18:17:55 +02:00
//---------------------------------------------------------------------------
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
int x=0, y=0;
int step = 5;
bool sp = false;
bool down = false;
bool shtrix = false;
int color = 0x0000ff;
int jir = 2;
bool md = false;
int ip = 0;
TPoint p[1000];
void __fastcall TForm1::FormPaint(TObject *Sender)
{
TRect aRect = Rect(0,0,ClientWidth,ClientHeight);
Canvas->Brush->Color=0xffffff;
Canvas->FillRect(aRect);
Canvas->Pen->Width=jir;
//Canvas->Pen->Mode=
Canvas->Pen->Style=shtrix?psDot:psSolid;
Canvas->Pen->Color=0x0000ff;
Canvas->Brush->Color=0x00ff00;
if(md) for(int i=0; i<ip; i++) {
//Canvas->MoveTo(p[i].x-1,p[i].y-1);
//Canvas->LineTo(p[i].x+1,p[i].y+1);
Canvas->Pixels[p[i].x][p[i].y]=clRed;
}else Canvas->Polygon(p, ip);//Canvas->Polyline(p,ip);
Canvas->Pen->Color=0xff0000;
Canvas->MoveTo(x,y);
Canvas->LineTo(x,y);
Canvas->Font->Color=0xff0000;
Canvas->TextOutA(23,ClientHeight-30,"x= "+IntToStr(x)+" y= "+IntToStr(y));
Canvas->TextOutA(123,ClientHeight-30,"step= "+IntToStr(step));
Canvas->TextOutA(223,ClientHeight-30,"<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>: "+IntToStr(ip));
}
void zz(int j, int x, int y) {
for(int i=j; i<1000; i++) {
p[i].x = x;
p[i].y = y;
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if(((int)Key)==VK_LEFT) {
x -= step;
}
if(((int)Key)==VK_RIGHT) {
x += step;
}
if(((int)Key)==VK_UP) {
y -= step;
}
if(((int)Key)==VK_DOWN) {
y += step;
}
if(((int)Key)==VK_F3) {
step--;
}
if(((int)Key)==VK_F4) {
step++;
}
if(((int)Key)==32) {
zz(ip++,x,y);
//p[ip].x = x;
//p[ip].y = y;
//ip++;
}
if(((int)Key)==13) {
md=!md;
}
if(((int)Key)==VK_BACK) {
zz(ip--,p[ip].x,p[ip].y);
}
if(((int)Key)==VK_ADD) {
jir++;
}
if(((int)Key)==VK_SUBTRACT) {
jir--;
if(jir<=0) jir=1;
}
if(((int)Key)==VK_DELETE) {
zz(ip=0,0,0);
}
if(((int)Key)==VK_HOME) {
Form1->Edit1->Visible=!Form1->Edit1->Visible;
Form1->Edit1->Text="array[1.."+IntToStr(ip)+"]of PointType=\n(";
for(int i=0; i<ip; i++) {
Form1->Edit1->Text=Form1->Edit1->Text+
"(x:"+IntToStr(p[i].x)+"; y:"+IntToStr(p[i].y)+"),";
if (i%5 == 4) Form1->Edit1->Text=Form1->Edit1->Text+"\n";
}
Form1->Edit1->Text = Form1->Edit1->Text+"\n);";
}
FormPaint(this);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
down = false;
zz(ip++,x=X,y=Y);
FormPaint(this);
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
if(down) {
zz(ip,x=X,y=Y);
FormPaint(this);
}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
down = true;
}