📄 shapesf.pas
字号:
unit ShapesF;
interface
uses Windows, Classes, Graphics, Forms, Controls, Menus,
Dialogs, ExtCtrls, SysUtils;
type
TShapesForm = class(TForm)
MainMenu1: TMainMenu;
ColorDialog1: TColorDialog;
File1: TMenuItem;
New1: TMenuItem;
N1: TMenuItem;
Exit1: TMenuItem;
Colors1: TMenuItem;
PenColor1: TMenuItem;
BrushColor1: TMenuItem;
Size1: TMenuItem;
IncreasePenSize1: TMenuItem;
DecreasePenSize1: TMenuItem;
Help1: TMenuItem;
AboutShapes1: TMenuItem;
Image1: TImage;
Saveas1: TMenuItem;
SaveDialog1: TSaveDialog;
Load1: TMenuItem;
OpenDialog1: TOpenDialog;
procedure PenColor1Click(Sender: TObject);
procedure BrushColor1Click(Sender: TObject);
procedure IncreasePenSize1Click(Sender: TObject);
procedure DecreasePenSize1Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure AboutShapes1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure New1Click(Sender: TObject);
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure Saveas1Click(Sender: TObject);
procedure Load1Click(Sender: TObject);
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
private
fChanged: Boolean;
fDragging: Boolean;
fRect: TRect;
end;
var
ShapesForm: TShapesForm;
implementation
{$R *.DFM}
function NormalizeRect (ARect: TRect): TRect;
var
tmp: Integer;
begin
if ARect.Bottom < ARect.Top then
begin
tmp := ARect.Bottom;
ARect.Bottom := ARect.Top;
ARect.Top := tmp;
end;
if ARect.Right < ARect.Left then
begin
tmp := ARect.Right;
ARect.Right := ARect.Left;
ARect.Left := tmp;
end;
Result := ARect;
end;
procedure TShapesForm.PenColor1Click(Sender: TObject);
begin
// select a new color for the pen
ColorDialog1.Color := Image1.Canvas.Pen.Color;
if ColorDialog1.Execute then
Image1.Canvas.Pen.Color := ColorDialog1.Color;
end;
procedure TShapesForm.BrushColor1Click(Sender: TObject);
begin
// select a new color for the brush
ColorDialog1.Color := Image1.Canvas.Brush.Color;
if ColorDialog1.Execute then
Image1.Canvas.Brush.Color := ColorDialog1.Color;
end;
procedure TShapesForm.IncreasePenSize1Click(Sender: TObject);
begin
// increase the size of the pen
Image1.Canvas.Pen.Width := Image1.Canvas.Pen.Width + 2;
DecreasePenSize1.Enabled := True;
end;
procedure TShapesForm.DecreasePenSize1Click(Sender: TObject);
begin
{decrease the size of the pen,
avoiding letting it go below zero}
Image1.Canvas.Pen.Width := Image1.Canvas.Pen.Width - 2;
if Image1.Canvas.Pen.Width < 3 then
DecreasePenSize1.Enabled := False;
end;
procedure TShapesForm.FormCreate(Sender: TObject);
begin
fChanged := False;
end;
procedure TShapesForm.AboutShapes1Click(Sender: TObject);
begin
// show a message box
MessageDlg ('ShapeBmp application'#13 +
'from "Mastering Delphi" by Marco Cant
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -