unit Unit2;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs;
type
TForm2 = class(TForm)
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormPaint(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
private
{ Private declarations }
fDragging: Boolean;
// procedure WMEraseBkGnd( Var Msg: TWMEraseBkGnd );
// message WM_ERASEBKGND;
public
{ Public declarations }
fRect: TRect;
fBmp: TBitmap;
end;
var
Form2: TForm2;
implementation
uses Unit1;
{$R *.DFM}
Var
p : TPoint;
procedure TForm2.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
P := Point(x, y);
if mbLeft = Button then
begin
fDragging := True;
SetRect( fRect, X, Y, X, Y );
Canvas.DrawFocusrect( fRect );
end;
end;
procedure TForm2.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if fDragging then begin
Canvas.DrawFocusrect( fRect );
fRect.Right := X;
fRect.Bottom := Y;
Canvas.DrawFocusrect( fRect );
end;
end;
procedure TForm2.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if fDragging then begin
Canvas.DrawFocusrect( fRect );
fDragging := False;
end;
ModalResult := mrOK;
Form1.TempBitmap.Width := X - P.X;
Form1.TempBitmap.Height := Y - P.Y;
Form1.MyBitmap.Width := Form1.TempBitmap.Width;
Form1.MyBitmap.Height := Form1.TempBitmap.Height;
/////////
// Form1.MyBitmap.PixelFormat := pf8bit;
// Form1.TempBitmap.PixelFormat := pf8bit;
/////////
Form1.TempBitmap.Canvas.CopyRect(Rect(0,0,X-P.X,Y-P.Y), fBmp.Canvas,
Rect(P.X,P.Y,X,Y));
Form1.MyBitmap.Canvas.CopyRect(Rect(0,0,X-P.X,Y-P.Y), fBmp.Canvas,
Rect(P.X,P.Y,X,Y));
Form1.Image1.Picture.Assign(Form1.TempBitmap);
Form1.Image1.Canvas.Brush.Style := bsClear;
Form1.Image1.Canvas.Pen.color := Clred;
Form1.Image1.Canvas.Pen.Width := 2;
Form1.Image1.Canvas.Pen.Style := psSolid;
Form1.Margin;
Form1.Visible := True;
close;
end;
procedure TForm2.FormPaint(Sender: TObject);
begin
Canvas.Draw( 0, 0, fBMP );
end;
{Procedure TForm2.WMEraseBkGnd( var Msg: TWMEraseBkGnd );
begin
// Msg.Result := 1;
end; }
procedure TForm2.FormShow(Sender: TObject);
var
aDC: HDC;
begin
Form1.Gif := False;
fBMP := TBitmap.Create;
fBMP.Width := Screen.Width;
fBMP.Height := Screen.Height;
aDC := GetDC( 0 );
BitBlt( fBMP.Canvas.handle, 0, 0, Screen.Width, Screen.Height,
aDC, 0, 0, srcCopy );
ReleaseDC( 0, aDC ); //?
SetBounds( 0, 0, Screen.Width, Screen.Height ); //?
end;
procedure TForm2.FormClose(Sender: TObject; var Action: TCloseAction);
begin
fBmp.Free;
end;
end.