unit Canvas_Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, Menus, ExtCtrls; type TForm1 = class(TForm) MainMenu1: TMainMenu; N1: TMenuItem; N2: TMenuItem; N3: TMenuItem; N4: TMenuItem; N5: TMenuItem; N6: TMenuItem; Timer1: TTimer; Timer2: TTimer; procedure FormPaint(Sender: TObject); procedure N6Click(Sender: TObject); procedure FormActivate(Sender: TObject); procedure N2Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); procedure N3Click(Sender: TObject); procedure Timer2Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.FormPaint(Sender: TObject); var x1, y1, x, y:integer; begin x1:=250; y1:=250; with canvas do begin Form1.Canvas.pen.Color:=clBlack; //telo Form1.Canvas.Brush.Color:=clGray; Form1.Canvas.Ellipse(x1-100,y1-125,x1,y1); //golova Form1.Canvas.Brush.Color:=clWhite; Form1.Canvas.Ellipse(x1-80,y1-160,x1-20,y1-100); //lapki Form1.Canvas.Brush.Color:=clBlack; Form1.Canvas.Ellipse(x1-40,y1-5,x1-15,y1+5); Form1.Canvas.Ellipse(x1-60,y1-5,x1-85,y1+5); //glazki Form1.Canvas.Brush.Color:=clGreen; Form1.Canvas.Ellipse(x1-55,y1-125,x1-65,y1-145); Form1.Canvas.Ellipse(x1-45,y1-125,x1-35,y1-145); //ushki Form1.Canvas.MoveTo(x1-85,y1-165); Form1.Canvas.LineTo(x1-75,y1-145); Form1.Canvas.MoveTo(x1-85,y1-165); Form1.Canvas.LineTo(x1-65,y1-155); Form1.Canvas.MoveTo(x1-15,y1-165); Form1.Canvas.LineTo(x1-25,y1-145); Form1.Canvas.MoveTo(x1-15,y1-165); Form1.Canvas.LineTo(x1-35,y1-155); //nosik Form1.Canvas.Brush.Color:=clWhite; Form1.Canvas.Ellipse(x1-55,y1-120,x1-45,y1-114); Form1.Canvas.MoveTo(x1-50,y1-114); Form1.Canvas.LineTo(x1-50,y1-110); Form1.Canvas.MoveTo(x1-55,y1-110); Form1.Canvas.LineTo(x1-45,y1-110); //ruchki //l Form1.Canvas.MoveTo(x1-65,y1-65); Form1.Canvas.LineTo(x1-65,y1-55); Form1.Canvas.LineTo(x1-67,y1-48); Form1.Canvas.LineTo(x1-70,y1-50); // Form1.Canvas.LineTo(x1-75,y1-60); //ruchki //r Form1.Canvas.MoveTo(x1-35,y1-65); Form1.Canvas.LineTo(x1-35,y1-55); Form1.Canvas.LineTo(x1-33,y1-48); Form1.Canvas.LineTo(x1-30,y1-50); // Form1.Canvas.LineTo(y1-25,y1-60); //hvostik Form1.Canvas.Brush.Color:=clYellow; Form1.Canvas.MoveTo(x1-25,y1-5); Form1.Canvas.LineTo(x1+10,y1-15); Form1.Canvas.LineTo(x1+25,y1-35); Form1.Canvas.LineTo(x1+50,y1-120); Form1.Canvas.Arc(x1+50,y1-130,x1+30,y1-110,x1+50,y1-120,x1+30,y1-120); Form1.Canvas.MoveTo(x1+30,y1-120); Form1.Canvas.LineTo(x1+5,y1-35); Form1.Canvas.LineTo(x1-20,y1-15); //zrachki Form1.Canvas.brush.Color:=clBlack; Form1.Canvas.Ellipse(x1-58,y1-137,x1-62,y1-133); Form1.Canvas.Ellipse(x1-42,y1-137,x1-38,y1-133); end; end; procedure TForm1.N6Click(Sender: TObject); begin Application.Terminate; end; Var x,y,dx, dy:integer; procedure TForm1.FormActivate(Sender: TObject); begin x:=10; y:=200; dx:=5; dy:=5; Timer1.Interval:=100; Timer2.Interval:=100; Form1.Canvas.Brush.Color:=Form1.Color; Randomize; x := Random(ClientWidth); if x <135 then x:=0; y := Random(ClientHeight); if y <0 then y:= 0; end; var nap:boolean; //горизонталь procedure TForm1.N2Click(Sender: TObject); begin Form1.Canvas.pen.Color:=Form1.Color; //telo Form1.Canvas.Brush.Color:=Form1.Color; Form1.Canvas.Ellipse(x-100,y-125,x,y); //golova Form1.Canvas.Brush.Color:=Form1.Color; Form1.Canvas.Ellipse(x-80,y-160,x-20,y-100); //lapki Form1.Canvas.Brush.Color:=Form1.Color; Form1.Canvas.Ellipse(x-40,y-5,x-15,y+5); Form1.Canvas.Ellipse(x-60,y-5,x-85,y+5); //glazki Form1.Canvas.Brush.Color:=Form1.Color; Form1.Canvas.Ellipse(x-55,y-125,x-65,y-145); Form1.Canvas.Ellipse(x-45,y-125,x-35,y-145); //ushki Form1.Canvas.MoveTo(x-85,y-165); Form1.Canvas.LineTo(x-75,y-145); Form1.Canvas.MoveTo(x-85,y-165); Form1.Canvas.LineTo(x-65,y-155); Form1.Canvas.MoveTo(x-15,y-165); Form1.Canvas.LineTo(x-25,y-145); Form1.Canvas.MoveTo(x-15,y-165); Form1.Canvas.LineTo(x-35,y-155); //nosik Form1.Canvas.Brush.Color:=Form1.Color; Form1.Canvas.Ellipse(x-55,y-120,x-45,y-114); Form1.Canvas.MoveTo(x-50,y-114); Form1.Canvas.LineTo(x-50,y-110); Form1.Canvas.MoveTo(x-55,y-110); Form1.Canvas.LineTo(x-45,y-110); //ruchki //l Form1.Canvas.MoveTo(x-65,y-65); Form1.Canvas.LineTo(x-65,y-55); Form1.Canvas.LineTo(x-67,y-48); Form1.Canvas.LineTo(x-70,y-50); // Form1.Canvas.LineTo(x-75,y-60); //ruchki //r Form1.Canvas.MoveTo(x-35,y-65); Form1.Canvas.LineTo(x-35,y-55); Form1.Canvas.LineTo(x-33,y-48); Form1.Canvas.LineTo(x-30,y-50); // Form1.Canvas.LineTo(y-25,y-60); //hvostik Form1.Canvas.Brush.Color:=Form1.Color; Form1.Canvas.MoveTo(x-25,y-5); Form1.Canvas.LineTo(x+10,y-15); Form1.Canvas.LineTo(x+25,y-35); Form1.Canvas.LineTo(x+50,y-120); Form1.Canvas.Arc(x+50,y-130,x+30,y-110,x+50,y-120,x+30,y-120); Form1.Canvas.MoveTo(x+30,y-120); Form1.Canvas.LineTo(x+5,y-35); Form1.Canvas.LineTo(x-20,y-15); //zrachki Form1.Canvas.brush.Color:=Form1.Color; Form1.Canvas.Ellipse(x-58,y-137,x-62,y-133); Form1.Canvas.Ellipse(x-42,y-137,x-38,y-133); If nap=False Then Begin x:=x+dx; End Else Begin x:=x-dx; End; If X+50>=Form1.Width Then Begin nap:=True; End; If X-100=0 Then Begin nap:=False; End; {FormPaint(Sender);} Form1.Canvas.pen.Color:=clBlack; //telo Form1.Canvas.Brush.Color:=clGray; Form1.Canvas.Ellipse(x-100,y-125,x,y); //golova Form1.Canvas.Brush.Color:=clWhite; Form1.Canvas.Ellipse(x-80,y-160,x-20,y-100); //lapki Form1.Canvas.Brush.Color:=clBlack; Form1.Canvas.Ellipse(x-40,y-5,x-15,y+5); Form1.Canvas.Ellipse(x-60,y-5,x-85,y+5); //glazki Form1.Canvas.Brush.Color:=clGreen; Form1.Canvas.Ellipse(x-55,y-125,x-65,y-145); Form1.Canvas.Ellipse(x-45,y-125,x-35,y-145); //ushki Form1.Canvas.MoveTo(x-85,y-165); Form1.Canvas.LineTo(x-75,y-145); Form1.Canvas.MoveTo(x-85,y-165); Form1.Canvas.LineTo(x-65,y-155); Form1.Canvas.MoveTo(x-15,y-165); Form1.Canvas.LineTo(x-25,y-145); Form1.Canvas.MoveTo(x-15,y-165); Form1.Canvas.LineTo(x-35,y-155); //nosik Form1.Canvas.Brush.Color:=clWhite; Form1.Canvas.Ellipse(x-55,y-120,x-45,y-114); Form1.Canvas.MoveTo(x-50,y-114); Form1.Canvas.LineTo(x-50,y-110); Form1.Canvas.MoveTo(x-55,y-110); Form1.Canvas.LineTo(x-45,y-110); //ruchki //l Form1.Canvas.MoveTo(x-65,y-65); Form1.Canvas.LineTo(x-65,y-55); Form1.Canvas.LineTo(x-67,y-48); Form1.Canvas.LineTo(x-70,y-50); // Form1.Canvas.LineTo(x-75,y-60); //ruchki //r Form1.Canvas.MoveTo(x-35,y-65); Form1.Canvas.LineTo(x-35,y-55); Form1.Canvas.LineTo(x-33,y-48); Form1.Canvas.LineTo(x-30,y-50); // Form1.Canvas.LineTo(y-25,y-60); //hvostik Form1.Canvas.Brush.Color:=clYellow; Form1.Canvas.MoveTo(x-25,y-5); Form1.Canvas.LineTo(x+10,y-15); Form1.Canvas.LineTo(x+25,y-35); Form1.Canvas.LineTo(x+50,y-120); Form1.Canvas.Arc(x+50,y-130,x+30,y-110,x+50,y-120,x+30,y-120); Form1.Canvas.MoveTo(x+30,y-120); Form1.Canvas.LineTo(x+5,y-35); Form1.Canvas.LineTo(x-20,y-15); //zrachki Form1.Canvas.brush.Color:=clBlack; Form1.Canvas.Ellipse(x-58,y-137,x-62,y-133); Form1.Canvas.Ellipse(x-42,y-137,x-38,y-133); Timer1.Enabled:=true; end; procedure TForm1.Timer1Timer(Sender: TObject); begin N2Click(Sender); end; procedure TForm1.N3Click(Sender: TObject); //вертикаль var nap, Horiz, vert:boolean; begin Form1.Canvas.pen.Color:=Form1.Color; //telo Form1.Canvas.Brush.Color:=Form1.Color; Form1.Canvas.Ellipse(x-100,y-125,x,y); //golova Form1.Canvas.Brush.Color:=Form1.Color; Form1.Canvas.Ellipse(x-80,y-160,x-20,y-100); //lapki Form1.Canvas.Brush.Color:=Form1.Color; Form1.Canvas.Ellipse(x-40,y-5,x-15,y+5); Form1.Canvas.Ellipse(x-60,y-5,x-85,y+5); //glazki Form1.Canvas.Brush.Color:=Form1.Color; Form1.Canvas.Ellipse(x-55,y-125,x-65,y-145); Form1.Canvas.Ellipse(x-45,y-125,x-35,y-145); //ushki Form1.Canvas.MoveTo(x-85,y-165); Form1.Canvas.LineTo(x-75,y-145); Form1.Canvas.MoveTo(x-85,y-165); Form1.Canvas.LineTo(x-65,y-155); Form1.Canvas.MoveTo(x-15,y-165); Form1.Canvas.LineTo(x-25,y-145); Form1.Canvas.MoveTo(x-15,y-165); Form1.Canvas.LineTo(x-35,y-155); //nosik Form1.Canvas.Brush.Color:=Form1.Color; Form1.Canvas.Ellipse(x-55,y-120,x-45,y-114); Form1.Canvas.MoveTo(x-50,y-114); Form1.Canvas.LineTo(x-50,y-110); Form1.Canvas.MoveTo(x-55,y-110); Form1.Canvas.LineTo(x-45,y-110); //ruchki //l Form1.Canvas.MoveTo(x-65,y-65); Form1.Canvas.LineTo(x-65,y-55); Form1.Canvas.LineTo(x-67,y-48); Form1.Canvas.LineTo(x-70,y-50); // Form1.Canvas.LineTo(x-75,y-60); //ruchki //r Form1.Canvas.MoveTo(x-35,y-65); Form1.Canvas.LineTo(x-35,y-55); Form1.Canvas.LineTo(x-33,y-48); Form1.Canvas.LineTo(x-30,y-50); // Form1.Canvas.LineTo(y-25,y-60); //hvostik Form1.Canvas.Brush.Color:=Form1.Color; Form1.Canvas.MoveTo(x-25,y-5); Form1.Canvas.LineTo(x+10,y-15); Form1.Canvas.LineTo(x+25,y-35); Form1.Canvas.LineTo(x+50,y-120); Form1.Canvas.Arc(x+50,y-130,x+30,y-110,x+50,y-120,x+30,y-120); Form1.Canvas.MoveTo(x+30,y-120); Form1.Canvas.LineTo(x+5,y-35); Form1.Canvas.LineTo(x-20,y-15); //zrachki Form1.Canvas.brush.Color:=Form1.Color; Form1.Canvas.Ellipse(x-58,y-137,x-62,y-133); Form1.Canvas.Ellipse(x-42,y-137,x-38,y-133); if Horiz then Begin if not Nap then y:=y+dy else y:=y-dy; if y>=ClientWidth then Nap:=True; //ширина if y<=0 then Nap:=False; end else Begin if not Nap then y:=y+dx else y:=y-dx; if y>=ClientHeight then Nap:=True; if y<=0 then Nap:=False; end; Form1.Canvas.pen.Color:=clBlack; //telo Form1.Canvas.Brush.Color:=clGray; Form1.Canvas.Ellipse(x-100,y-125,x,y); //golova Form1.Canvas.Brush.Color:=clWhite; Form1.Canvas.Ellipse(x-80,y-160,x-20,y-100); //lapki Form1.Canvas.Brush.Color:=clBlack; Form1.Canvas.Ellipse(x-40,y-5,x-15,y+5); Form1.Canvas.Ellipse(x-60,y-5,x-85,y+5); //glazki Form1.Canvas.Brush.Color:=clGreen; Form1.Canvas.Ellipse(x-55,y-125,x-65,y-145); Form1.Canvas.Ellipse(x-45,y-125,x-35,y-145); //ushki Form1.Canvas.MoveTo(x-85,y-165); Form1.Canvas.LineTo(x-75,y-145); Form1.Canvas.MoveTo(x-85,y-165); Form1.Canvas.LineTo(x-65,y-155); Form1.Canvas.MoveTo(x-15,y-165); Form1.Canvas.LineTo(x-25,y-145); Form1.Canvas.MoveTo(x-15,y-165); Form1.Canvas.LineTo(x-35,y-155); //nosik Form1.Canvas.Brush.Color:=clWhite; Form1.Canvas.Ellipse(x-55,y-120,x-45,y-114); Form1.Canvas.MoveTo(x-50,y-114); Form1.Canvas.LineTo(x-50,y-110); Form1.Canvas.MoveTo(x-55,y-110); Form1.Canvas.LineTo(x-45,y-110); //ruchki //l Form1.Canvas.MoveTo(x-65,y-65); Form1.Canvas.LineTo(x-65,y-55); Form1.Canvas.LineTo(x-67,y-48); Form1.Canvas.LineTo(x-70,y-50); // Form1.Canvas.LineTo(x-75,y-60); //ruchki //r Form1.Canvas.MoveTo(x-35,y-65); Form1.Canvas.LineTo(x-35,y-55); Form1.Canvas.LineTo(x-33,y-48); Form1.Canvas.LineTo(x-30,y-50); // Form1.Canvas.LineTo(y-25,y-60); //hvostik Form1.Canvas.Brush.Color:=clYellow; Form1.Canvas.MoveTo(x-25,y-5); Form1.Canvas.LineTo(x+10,y-15); Form1.Canvas.LineTo(x+25,y-35); Form1.Canvas.LineTo(x+50,y-120); Form1.Canvas.Arc(x+50,y-130,x+30,y-110,x+50,y-120,x+30,y-120); Form1.Canvas.MoveTo(x+30,y-120); Form1.Canvas.LineTo(x+5,y-35); Form1.Canvas.LineTo(x-20,y-15); //zrachki Form1.Canvas.brush.Color:=clBlack; Form1.Canvas.Ellipse(x-58,y-137,x-62,y-133); Form1.Canvas.Ellipse(x-42,y-137,x-38,y-133); Timer1.Enabled:=true; end; procedure TForm1.Timer2Timer(Sender: TObject); begin { N3Click(Sender); } end; end.