unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls, Buttons, ExtDlgs;
type
TForm1 = class(TForm)
SpeedButton1: TSpeedButton;
OpenPictureDialog1: TOpenPictureDialog;
Image1: TImage;
SavePictureDialog1: TSavePictureDialog;
procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure SpeedButton1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
Rect,drect:Trect;
pain:boolean;
implementation
{$R *.dfm}
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if pain=true then
begin
form1.Canvas.DrawFocusRect(rect);
rect.Right:=x;
rect.Bottom:=y;
form1.Canvas.DrawFocusRect(rect);
end;
end;
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
rect.Left:=0;
rect.Top:=0;
rect.Right:=0;
rect.Bottom:=0;
rect.Left:=x;
rect.Top:=y;
if button=mbRight then
pain:=True;
end;
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Form1.Refresh;
Form1.Canvas.Draw(0,0,image1.Picture.Bitmap);
Form1.Canvas.DrawFocusRect(rect);
pain:=False;
end;
procedure TForm1.FormKeyPress(Sender: TObject; var Key: Char);
var
BMPimage : TBitmap;
Str : String;
begin
BMPimage:=TBitmap.Create;
try
drect.Left:=0;
drect.Top:=0;
drect.Right:= rect.Right-rect.Left;
drect.Bottom:= rect.Bottom-rect.Top;
BMPimage := TBitmap.Create;
BMPimage.Width := drect.Right;
BMPimage.Height := drect.Bottom;
BMPimage.Canvas.CopyRect(drect,Form1.Canvas,rect);
if key=#13 then
begin
if SavePictureDialog1.Execute then
begin
Str := SavePictureDialog1.FileName;
BMPimage.SaveToFile(Str+'.bmp');
end;
end;
except
BMPimage.Free;
end;
end;
procedure TForm1.SpeedButton1Click(Sender: TObject);
begin
if OpenPictureDialog1.Execute then
begin
image1.Picture.LoadFromFile(OpenPictureDialog1.FileName);
Form1.Canvas.Draw(0,0,image1.Picture.Bitmap);
end;
end;
end.
以上的代码在Delphi上运行没有错的。放到平台上,编译通过,运行时SpeedButton1Click事件中Form1.Canvas.Draw(0,0,image1.Picture.Bitmap);出错,请帮忙改一下。 |