Delphi: разработка программы простейшего графического редактора
3. Текст программы
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ColorGrd, StdCtrls, Spin, ExtCtrls, Menus, Buttons, ExtDlgs;
type
TForm1 = class(TForm)
Image1: TImage;
MainMenu1: TMainMenu;
Panel1: TPanel;
Panel2: TPanel;
N1: TMenuItem;
SpeedButton5: TSpeedButton;
SpeedButton8: TSpeedButton;
N8: TMenuItem;
N10: TMenuItem;
N11: TMenuItem;
N21: TMenuItem;
OpenPictureDialog1: TOpenPictureDialog;
SavePictureDialog1: TSavePictureDialog;
Memo1: TMemo;
ColorDialog1: TColorDialog;
ScrollBox1: TScrollBox;
N2: TMenuItem;
N3: TMenuItem;
FontDialog1: TFontDialog;
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormCreate(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure N8Click(Sender: TObject);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure SpeedButton8Click(Sender: TObject);
procedure N10Click(Sender: TObject);
procedure N3Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
funcpencil = 1;
funcfill = 2;
funcgetcol = 3;
funcline = 4;
funcerase = 5;
funcspray = 6;
funcrect = 7;
funcellip = 8;
funcrrect = 9;
funcwrite = 10;
funcbezier = 11;
funcpolygon = 12;
funcbrush = 13;
var
Form1 : TForm1;
func : byte;
fcol : tcolor;
bcol : tcolor;
Image : TImage;
fx,fy : integer;
stx,sty : integer;
eraser : integer;
but : TShiftState;
rad : byte;
stil : byte;
points : array [1..4] of TPoint;
NumP : byte;
wid,het : LongInt;
mastab : byte;
polyg : array of TPoint;
brkind,brsize : byte;
implementation
{$R *.dfm}
uses proc, AbPr;
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if ssLeft in shift then
case func of
funcpencil : pencil(x,y,fcol);
end;
if ssright in shift then
case func of
funcpencil : pencil(x,y,bcol);
end;
Image.Canvas.MoveTo(x,y);
end;
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var i:integer;
st:string;
count:integer;
begin
if ssLeft in shift then
case func of
funcwrite : begin
memo1.Font.Color:=fcol;
form1.memo1.Left:=x;
form1.memo1.Top:=y;
form1.memo1.Show;
func:=100;
end;
end;
if ssright in shift then
case func of
funcwrite : begin
memo1.Font.Color:=bcol;
form1.memo1.Left:=x;
form1.memo1.Top:=y;
form1.memo1.Show;
func:=100;
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
//form2.hide;
memo1.Hide;
eraser:=3;
openpicturedialog1.FilterIndex:=4;
openpicturedialog1.InitialDir:=extractfilepath(paramstr(0));
savepicturedialog1.InitialDir:=extractfilepath(paramstr(0));
panhide;
Image:=form1.image1;
wid:=image.Width;
het:=image.Height;
image.Canvas.Pen.Mode:= pmcopy;
bcol:=clwhite;
Image.Canvas.FillRect(rect(0,0,image1.Width,image1.Height));
end;
procedure TForm1.SpeedButton5Click(Sender: TObject);
begin
func:=funcpencil;
panhide;
setprop;
end;
procedure TForm1.N10Click(Sender: TObject);
begin
if savepicturedialog1.Execute then
begin
image.AutoSize:=true;
image.Picture.LoadFromFile(openpicturedialog1.FileName);
end;
end;
procedure TForm1.N3Click(Sender: TObject);
begin
if FontDialog1.Execute= true then
Memo1.Font:=FontDialog1.Font;
end;
procedure TForm1.N8Click(Sender: TObject);
begin
if openpicturedialog1.Execute then
begin
image.AutoSize:=true;
image.Picture.LoadFromFile(openpicturedialog1.FileName);
end;
end;
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
image.Canvas.Pen.Mode:= pmcopy;
end;
procedure TForm1.SpeedButton8Click(Sender: TObject);
begin
panhide;
setprop;
func:=funcwrite;
end;
end.