Programozási alapismeretek (M1,M2) Szakasz és kör rajzolása Horváth Győző & Papp-Varga Zsuzsanna
1. feladat: Koordináta rendszer kirajzolása
Komponensek 1db TImage, 1db TGroupBox Properties TImage:
Name: ImageRajz Align: alClient TGroupBox: Name: GroupBoxManip Caption: Align: alBottom Eljárások, függvények var ks, ko: integer; procedure Inicializal; begin with Form1.ImageRajz do begin ko:=Width div 2; ks:=Height div 2; Picture.Bitmap.Width:=Width; Picture.Bitmap.Height:=Height; Picture.Bitmap.Clear;
//origó x koord. //origó y koord.
//tiszta lap
Picture.Bitmap.Canvas.Pen.Color:=clWhite; //fehér Picture.Bitmap.Canvas.Line(0,ks,Width-1,ks); //x tengely Picture.Bitmap.Canvas.Line(ko,0,ko,Height-1); //y tengely end; end;
Events Form1: onResize procedure TForm1.FormResize(Sender: TObject); begin Inicializal; end;
Programozási alapismeretek (M1,M2) Szakasz és kör rajzolása Horváth Győző & Papp-Varga Zsuzsanna
2. feladat: Pontrajzolás
Komponensek 1db TLabel, 2db TLabeldEdit, 1db Button Properties TLabel:
Name: LabelP Caption: P pont LabeledEdit: Name: LabeledEditx/ LabeledEdity EditLabel: Caption: x/ y LabelPosition: lpLeft Button: Name: ButtonPontRajzol Caption: Pont Eljárások, függvények procedure PontRajzol(const x,y: real); var s,o: integer; begin s:=round(ks-y); o:=round(ko+x); if ((0<=s) and (s<=Form1.ImageRajz.Height-1) and (0<=o) and (o<=Form1.ImageRajz.Width-1))then begin Form1.ImageRajz.Picture.Bitmap.Canvas.Pixels[o, s] := clWhite; end; end;
Events ButtonPontRajzol: onClick procedure TForm1.ButtonPontRajzolClick(Sender: TObject); var x,y: real; begin x:=StrToFloat(LabeledEditx.Text); y:=StrToFloat(LabeledEdity.Text); PontRajzol(x,y); end;
Programozási alapismeretek (M1,M2) Szakasz és kör rajzolása Horváth Győző & Papp-Varga Zsuzsanna
3. feladat: Szakaszrajzolás
Komponensek 1db TLabel, 2db TLabeldEdit, 2db Button Properties TLabel:
Name: LabelQ Caption: Q pont LabeledEdit: Name: LabeledEditx2/ LabeledEdity2 EditLabel: Caption: x/ y LabelPosition: lpLeft Button: Name: ButtonSzakaszRajzol1/ ButtonSzakaszRajzol2 Caption: Szakasz I. /Szakasz II. Eljárások, függvények procedure SzakaszRajzol1(const x1,y1,x2,y2: integer); var it,y: real; x: integer; begin it := (y2-y1)/(x2-x1); for x:=x1 to x2 do begin y:=(x-x1)*it+y1; PontRajzol(x,y); end; end;
Programozási alapismeretek (M1,M2) Szakasz és kör rajzolása Horváth Győző & Papp-Varga Zsuzsanna
procedure SzakaszRajzol2(const x1,y1,x2,y2: integer); var lx,ly,x,y:real; hx,hy,h,k: integer; begin hx:=x2-x1; hy:=y2-y1; if abs(hx)>abs(hy) then h:=abs(hx) else h:=abs(hy); if h = 0 then PontRajzol(x1,y1) else begin lx:=hx/h; ly:=hy/h; x:=x1; y:=y1; PontRajzol(x1,y1); for k:=1 to h do begin x:=x+lx; y:=y+ly; PontRajzol(x,y); end; end; end;
Events ButtonSzakaszRajzol1: onClick procedure TForm1.ButtonSzakaszRajzol1Click(Sender: TObject); var x1,y1,x2,y2: integer; begin x1:=StrToInt(LabeledEditx.Text); y1:=StrToInt(LabeledEdity.Text); x2:=StrToInt(LabeledEditx2.Text); y2:=StrToInt(LabeledEdity2.Text); SzakaszRajzol1(x1,y1,x2,y2); end;
ButtonSzakaszRajzol2: onClick procedure TForm1.ButtonSzakaszRajzol2Click(Sender: TObject); var x1,y1,x2,y2: integer; begin x1:=StrToInt(LabeledEditx.Text); y1:=StrToInt(LabeledEdity.Text); x2:=StrToInt(LabeledEditx2.Text); y2:=StrToInt(LabeledEdity2.Text); SzakaszRajzol2(x1,y1,x2,y2); end;
Programozási alapismeretek (M1,M2) Szakasz és kör rajzolása Horváth Győző & Papp-Varga Zsuzsanna
4. feladat: Körrajzolás
Komponensek 1db Common Controls: TTrackBar, 1db TButton Properties Button: TTrackBar:
Name: ButtonKor Caption: Kör Name: TrackBarSugar Max: 200 Position: 100
Eljárások, függvények procedure Kovetkezo(var x,y: integer; const r: integer); begin if (x+1)*(x+1)+y*y<=r*r then x:=x+1 else if (x+1)*(x+1)+(y-1)*(y-1)<=r*r then begin x:=x+1; y:=y-1; end else y:=y-1; end; procedure KorRajzol(const r:integer); var x,y: integer; begin x:=0; y:=r; while y>=0 do begin PontRajzol(x,y); PontRajzol(-x,y); PontRajzol(x,-y); PontRajzol(-x,-y); Kovetkezo(x,y,r); end; end;
Programozási alapismeretek (M1,M2) Szakasz és kör rajzolása Horváth Győző & Papp-Varga Zsuzsanna
Events ButtonKor: onClick procedure TForm1.ButtonKorClick(Sender: TObject); begin KorRajzol(TrackBarSugar.Position) end;
TrackBarSugar: onChange procedure TForm1.TrackBarSugarChange(Sender: TObject); begin Inicializal; KorRajzol(TrackBarSugar.Position); end;
Programozási alapismeretek (M1,M2) Szakasz és kör rajzolása Horváth Győző & Papp-Varga Zsuzsanna
5. feladat: Mentés, kilépés
Komponensek 1db TSavePictureDialog, 2db TButton Properties SavePictureDialog: Name: SavePictureDialog Button: Name: ButtonMent/ButtonKilep Caption: Mentés/Kilépés Events ButtonMent: onClick procedure TForm1.ButtonMentClick(Sender: TObject); begin if SavePictureDialog.Execute then begin ImageRajz.Picture.SaveToFile(SavePictureDialog.FileName); end; end;
ButtonKilep: onClick procedure TForm1.ButtonKilepClick(Sender: TObject); begin Close; end;