这是我写的一个图形编辑器的代码,可以画圆,直线,\.但是不知道代码哪错了?
unit Unit1;interfaceuses
  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;
    N7: TMenuItem;
    N8: TMenuItem;
    N9: TMenuItem;
    N10: TMenuItem;
    N11: TMenuItem;
    N12: TMenuItem;
    OpenDialog1: TOpenDialog;
    SaveDialog1: TSaveDialog;
    ColorDialog1: TColorDialog;
    Image1: TImage;
    procedure N7Click(Sender: TObject);
    procedure N9Click(Sender: TObject);
    procedure N8Click(Sender: TObject);
    procedure N12Click(Sender: TObject);
    procedure N11Click(Sender: TObject);
    procedure N2Click(Sender: TObject);
    procedure N3Click(Sender: TObject);
    procedure N4Click(Sender: TObject);
    procedure N5Click(Sender: TObject);
    procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
    procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
      Y: Integer);
    procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
      Shift: TShiftState; X, Y: Integer);
  private
    { Private declarations }
  public
    { Public declarations }
  end;var
  Form1: TForm1;
  drawing:boolean;
  Origin,MovePoint:TPoint;
  c:char;
  procedure drawShape(Image1:TImage;TopLeft,BottomRight:TPoint;pMode:TPenMode);
  begin
  with Image1.Canvas do
  begin
  Pen.Mode:=pMode;
  case c of
  'r':
  begin
  Rectangle(TopLeft.X,TopLeft.Y,BottomRight.X,BottomRight.Y);
  end;
  'c':
  begin
  Ellipse(TopLeft.X,TopLeft.Y,BottomRight.X,BottomRight.Y);
  end;
  'l':
  begin
  MoveTo(TopLeft.X,TopLeft.Y);
  LineTo(BottomRight.X,BottomRight.Y);
  end;
  end;
  end;
  end;
implementation{$R *.dfm}procedure TForm1.N7Click(Sender: TObject);
begin
c:='r';
end;procedure TForm1.N9Click(Sender: TObject);
begin
c:='l';
end;procedure TForm1.N8Click(Sender: TObject);
begin
c:='c';
end;procedure TForm1.N12Click(Sender: TObject);
begin
colordialog1.Color:=Image1.Canvas.Brush.Color;
if colordialog1.Execute then
Image1.Canvas.Brush.Color:=colordialog1.Color;
end;procedure TForm1.N11Click(Sender: TObject);
begin
colordialog1.Color:=Image1.Canvas.Pen.Color;
if colordialog1.Execute then
Image1.Canvas.Pen.Color:=colordialog1.Color;
end;procedure TForm1.N2Click(Sender: TObject);
var
Area:TRect;
OldColor:TColor;
begin
Area:=Rect(0,0,Image1.Picture.Width,Image1.Picture.Height);
OldColor:=Image1.Canvas.Brush.Color;
Image1.Canvas.Brush.Color:=clWhite;
Image1.Canvas.FillRect(Area);
Image1.Canvas.Brush.Color:=OldColor;
end;procedure TForm1.N3Click(Sender: TObject);
var
PenCol,BrushCol:TColor;
PenSize:integer;
begin
if opendialog1.Execute then
begin
PenCol:=Image1.Canvas.Pen.Color;
BrushCol:=Image1.Canvas.Brush.Color;
PenSize:=Image1.Canvas.Pen.Width;
Image1.Canvas.Pen.Color:=PenCol;
Image1.Canvas.Brush.Color:=BrushCol;
Image1.Canvas.Pen.Width:=PenSize;
end;end;procedure TForm1.N4Click(Sender: TObject);
begin
if savedialog1.Execute then
Image1.Picture.SaveToFile(savedialog1.FileName);end;procedure TForm1.N5Click(Sender: TObject);
begin
close;
end;procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if Button = mbleft then
begin
Drawing:=True;
Image1.Canvas.MoveTo(X,Y);
MovePoint:=Origin;
end;end;procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
if Drawing then
begin
DrawShape(Iamge1,Origin,MovePoint,pmNotXor);
MovePoint:=Point(X,Y);
 DrawShape(Iamge1,Origin,MovePoint,pmNotXor);
 end;
 
end;procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
  Shift: TShiftState; X, Y: Integer);
begin
if Drawing then
begin
DrawShape(Iamge1,Origin,Point(X,Y),pmCopy);
Drawing:=False;
end;end;end.