Unit uMainForm;
{$mode objfpc}{$H+}
Interface
Uses
Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,
FPImage, FPCanvas, FPImgCanv,
FPReadBMP, FPReadGIF;
Type
{ TMainForm }
TMainForm = Class(TForm)
Procedure FormActivate(Sender: TObject);
Procedure FormCreate(Sender: TObject);
Procedure FormDestroy(Sender: TObject);
Procedure FormDropFiles(Sender: TObject; Const FileNames: Array Of String);
Procedure FormPaint(Sender: TObject);
private
InDrawingMode : Boolean;
protected
FPCanvas : TFPcustomCanvas;
FPImage : TFPCustomImage;
FPReader : TFPCustomImageReader;
public
procedure DrawFPImageToCanvas(ACanvas: TFPCustomCanvas);
End;
Var
MainForm: TMainForm;
Implementation
{$R *.lfm}
{ TMainForm }
Const
FPColorRed: TFPColor = (Red: 65535; Green: 0; Blue: 0; Alpha: 65535);
procedure TMainForm.DrawFPImageToCanvas(ACanvas: TFPCustomCanvas);
begin
Canvas.CopyRect(Rect(0,0,Canvas.Width,Canvas.Height),TCanvas(ACanvas) , Rect(0,0,ACanvas.Width,ACanvas.Height));
end;
Procedure TMainForm.FormActivate(Sender: TObject);
Begin
InDrawingMode:= True;
end;
Procedure TMainForm.FormCreate(Sender: TObject);
Begin
FPImage := TFPMemoryImage.Create (256, 256);
FPCanvas := TFPImageCanvas.Create (FPImage);
FPCanvas.Brush.FPColor := FPColorRed ;
FPCanvas.Brush.Style := bsSolid;
FPCanvas.Clear;
InDrawingMode:= False;
end;
Procedure TMainForm.FormDestroy(Sender: TObject);
Begin
FreeAndNil(FPCanvas);
FreeAndNil(FPImage);
end;
Procedure TMainForm.FormDropFiles(Sender: TObject; Const FileNames: Array Of String);
Var
ImageFileName : String;
FileExtension : String;
Begin
ImageFileName := FileNames[0];
FileExtension := ExtractFileExt(ImageFileName);
showmessage(FileExtension);
if FIleExtension ='.bmp' then
FPReader := TFPReaderBMP.Create
else if FIleExtension ='.gif' then
FPReader := TFPReaderGIF.Create;
Try
Try
Screen.Cursor := crHourGlass;
FPImage.LoadFromFile(ImageFileName, FPReader);
Finally
Screen.Cursor := crDefault;
End;
Except
On E: FPImageException Do
Begin
MessageDlg(E.Message, mtWarning, [mbOK], 0);
Exit;
End
Else
Begin
MessageDlg('Unknown Error', mtError, [mbOK, mbAbort], 0);
End;
End;
end;
Procedure TMainForm.FormPaint(Sender: TObject);
Begin
if InDrawingMode then DrawFPImageToCanvas(FPCanvas);
end;
End.