unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls, StdCtrls; type TForm1 = class(TForm) Image1: TImage; Timer1: TTimer; procedure FormCreate(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); procedure FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); private { Private declarations } public { Public declarations } end; var Form1: TForm1; tleft, tright, ttop, tbottom : boolean; lastkey : byte; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Form1.Image1.Canvas.LineTo(0,Form1.Image1.Height-1); Form1.Image1.Canvas.LineTo(Form1.Image1.Width-1,Form1.Image1.Height-1); Form1.Image1.Canvas.LineTo(Form1.Image1.Width-1,0); Form1.Image1.Canvas.LineTo(0,0); Form1.Image1.Canvas.MoveTo((Form1.Image1.Width div 2),(Form1.Image1.Height div 2)); tleft:=false; tright:=false; ttop:=false; tbottom:=false; end; procedure TForm1.Timer1Timer(Sender: TObject); var truenr: byte; begin truenr:=0; if tleft=true then Inc(truenr); if tright=true then Inc(truenr); if ttop=true then Inc(truenr); if tbottom=true then Inc(truenr); if tright=true then begin Form1.Image1.Canvas.MoveTo(Form1.Image1.Canvas.PenPos.X+1,Form1.Image1.Canvas.PenPos.Y); lastkey:=68; end else if tleft=true then begin Form1.Image1.Canvas.MoveTo(Form1.Image1.Canvas.PenPos.X-1,Form1.Image1.Canvas.PenPos.Y); lastkey:=65; end else if ttop=true then begin Form1.Image1.Canvas.MoveTo(Form1.Image1.Canvas.PenPos.X,Form1.Image1.Canvas.PenPos.Y-1); lastkey:=87; end else if tbottom=true then begin Form1.Image1.Canvas.MoveTo(Form1.Image1.Canvas.PenPos.X,Form1.Image1.Canvas.PenPos.Y+1); lastkey:=83; end; Form1.Image1.Canvas.Pixels[Form1.Image1.Canvas.PenPos.X,Form1.Image1.Canvas.PenPos.Y]:=clBlack; truenr:=0; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=65 then tleft:=true; if key=68 then tright:=true; if key=87 then ttop:=true; if key=83 then tbottom:=true; end; procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key=65 then tleft:=false; if key=68 then tright:=false; if key=87 then ttop:=false; if key=83 then tbottom:=false; end; end.