Масштабирование. Геометрическое моделирование

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

  ComCtrls, Menus, ExtCtrls, StdCtrls, Spin;

type

  TForm1 = class(TForm)

    StatusBar1: TStatusBar;

    SpinEdit1: TSpinEdit;

    Image1: TImage;

    RadioButton1: TRadioButton;

    RadioButton2: TRadioButton;

    procedure FormMouseDown(Sender: TObject; Button: TMouseButton;

      Shift: TShiftState; X, Y: Integer);

    procedure SpinEdit1Change(Sender: TObject);

    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,

      Y: Integer);

    procedure RadioButton1Click(Sender: TObject);

    procedure RadioButton2Click(Sender: TObject);

    procedure FormCreate(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

var

  Form1: TForm1;

  xi,yi: integer;

  h,i:integer;

implementation

{$R *.DFM}

procedure p1;

begin

form1.refresh;

form1.canvas.pixels[xi,yi]:=clred;

for i:=0 to 628 do

   form1.canvas.pixels[trunc(xi+H*cos(i/100)),trunc(yi+H*sin(i/100))]:=clblue;

end;

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;

  Shift: TShiftState; X, Y: Integer);

      begin

            xi:=x;

            yi:=y;

            p1;

      end;

procedure TForm1.SpinEdit1Change(Sender: TObject);

begin

h:=SpinEdit1.value;

 if  RadioButton1.checked=true then p1

  else

      begin

 image1.width:=SpinEdit1.value;

 image1.height:=SpinEdit1.value;

      end;

end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,

  Y: Integer);

begin

      statusbar1.simpletext:=' X : '+inttostr(x)+'   Y : '+inttostr(y);

end;

procedure TForm1.RadioButton1Click(Sender: TObject);

begin

Image1.visible:=false;

p1;

end;

procedure TForm1.RadioButton2Click(Sender: TObject);

begin

refresh;

Image1.visible:=true;

end;

procedure TForm1.FormCreate(Sender: TObject);

begin

     h:=30;

end;

end.