www.pudn.com > TMSSkinFactoryv1.27.zip > VsClipRectDlg.pas
unit VsClipRectDlg;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
ExtCtrls, StdCtrls, ComCtrls, VsClasses;
type
TVsClipRectDialog = class(TForm)
Panel1: TPanel;
Panel2: TPanel;
ScrollBox: TScrollBox;
Image1: TImage;
Label1: TLabel;
Edit1: TEdit;
Label2: TLabel;
Edit2: TEdit;
Label3: TLabel;
Edit3: TEdit;
Label4: TLabel;
Edit4: TEdit;
Panel3: TPanel;
Button1: TButton;
Button2: TButton;
UpDown1: TUpDown;
UpDown2: TUpDown;
UpDown3: TUpDown;
UpDown4: TUpDown;
Button3: TButton;
Button4: TButton;
procedure Edit1KeyPress(Sender: TObject; var Key: Char);
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);
procedure Edit1Change(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormDestroy(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
Bitmap: TBitmap;
Drawing: Boolean;
Origin, MovePt: TPoint;
ClipRect: TVsClipRect;
procedure DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);
public
procedure SetBitmap(Value: TBitmap);
procedure SetClipRect(Value: TVsClipRect);
end;
var
VsClipRectDialog: TVsClipRectDialog;
implementation
{$R *.DFM}
procedure TVsClipRectDialog.FormCreate(Sender: TObject);
begin
Bitmap := TBitmap.Create;
end;
procedure TVsClipRectDialog.FormDestroy(Sender: TObject);
begin
Bitmap.Free;
end;
procedure TVsClipRectDialog.DrawShape(TopLeft, BottomRight: TPoint; AMode: TPenMode);
begin
with Image1.Canvas do
begin
Pen.Mode := AMode;
Pen.Color := clRed;
Brush.Style := bsClear;
Image1.Canvas.Rectangle(TopLeft.X, TopLeft.Y, BottomRight.X, BottomRight.Y);
end;
end;
procedure TVsClipRectDialog.Edit1KeyPress(Sender: TObject; var Key: Char);
begin
if not (Key in ['0'..'9', #8]) then
Key := #0;
end;
procedure TVsClipRectDialog.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Image1.Picture.Bitmap.Assign(Bitmap);
Drawing := True;
Image1.Canvas.MoveTo(X, Y);
Origin := Point(X, Y);
MovePt := Origin;
end;
procedure TVsClipRectDialog.Image1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if Drawing then
begin
Image1.Picture.Bitmap.Assign(Bitmap);
MovePt := Point(X, Y);
DrawShape(Origin, MovePt, pmCOPY);
end;
end;
procedure TVsClipRectDialog.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
var
P: TPoint;
begin
if Drawing then
begin
MovePt := Point(X, Y);
if (X < Origin.X) or (Y < Origin.Y) then
begin
P := MovePt;
MovePt := Origin;
Origin := P;
end;
Image1.Picture.Bitmap.Assign(Bitmap);
DrawShape(Origin, MovePt, pmCOPY);
UpDown1.Position := Origin.X;
UpDown2.Position := Origin.Y;
UpDown3.Position := MovePt.X - Origin.X;
UpDown4.Position := MovePt.Y - Origin.Y;
Drawing := False;
end;
end;
procedure TVsClipRectDialog.Edit1Change(Sender: TObject);
begin
if Drawing then Exit;
Image1.Picture.Bitmap.Assign(Bitmap);
Origin.X := UpDown1.Position;
Origin.Y := UpDown2.Position;
MovePt.X := Origin.X + UpDown3.Position;
MovePt.Y := Origin.Y + UpDown4.Position;
DrawShape(Origin, MovePt, pmCOPY);
end;
procedure TVsClipRectDialog.SetClipRect(Value: TVsClipRect);
begin
ClipRect := Value;
UpDown1.Position := ClipRect.Left;
UpDown2.Position := ClipRect.Top;
UpDown3.Position := ClipRect.Width;
UpDown4.Position := ClipRect.Height;
Edit1Change(Edit1);
end;
procedure TVsClipRectDialog.SetBitmap(Value: TBitmap);
begin
Bitmap.Assign(Value);
end;
procedure TVsClipRectDialog.Button1Click(Sender: TObject);
begin
ClipRect.Left := UpDown1.Position;
ClipRect.Top := UpDown2.Position;
ClipRect.Width := UpDown3.Position;
ClipRect.Height := UpDown4.Position;
end;
procedure TVsClipRectDialog.Button3Click(Sender: TObject);
begin
SetClipRect(ClipRect);
end;
procedure TVsClipRectDialog.Button4Click(Sender: TObject);
begin
UpDown1.Position := 0;
UpDown2.Position := 0;
UpDown3.Position := Bitmap.Width;
UpDown4.Position := Bitmap.Height;
end;
end.