这是我写的一个图形编辑器的代码,可以画圆,直线,\.但是不知道代码哪错了?
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.
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.
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货