⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 fmtstgif.pas

📁 Delphi direct support for GIF files
💻 PAS
字号:
unit FmTstGIF;
{ Exports TTestGifForm, which is the main form of the small test
program "TestGif" which demonstrates the TGifFile object of
the unit GifUnit.

By Reinier Sterkenburg, Delft, The Netherlands
10 Mar 97: - created
 3 Apr 97: - added Image Info option (using FmImInfo and FmSubImg)
 2 Aug 97: - adapted to changes in used units
}

interface

uses
  WinProcs, WinTypes, {Windows,} Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  Menus, ExtCtrls,
  ColorTbl,        { Imports TColorTable }
  DynArrB,         { Imports TByteArray2D }
  FmAbout,         { Imports AboutBox }
  GifDecl,         { Imports CheckType }
  GifUnit,         { Imports TGifFile }
  IniFiles;        { Imports TIniFile }


type
  TTestGifForm = class(TForm)
    MainMenu1: TMainMenu;
    File1: TMenuItem;
    Open1: TMenuItem;
    Save1: TMenuItem;
    Saveas1: TMenuItem;
    Exit1: TMenuItem;
    About1: TMenuItem;
    OpenDialog: TOpenDialog;
    SaveDialog: TSaveDialog;
    Image: TImage;
    Edit1: TMenuItem;
    Imageinfo1: TMenuItem;
    procedure Open1Click(Sender: TObject);
    procedure Save1Click(Sender: TObject);
    procedure Saveas1Click(Sender: TObject);
    procedure Exit1Click(Sender: TObject);
    procedure About1Click(Sender: TObject);
    procedure Imageinfo1Click(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    { Private declarations }
    GifFile: TGifFile;
    Filename: String;
  public
    { Public declarations }
  end; { TTestGifForm }

var
  TestGifForm: TTestGifForm;

implementation

uses FmImInfo;

{$R *.DFM}

const
  CRLF = #13+#10;

procedure TTestGifForm.Open1Click(Sender: TObject);
var
  IniFilename: String;
  IniFile: TIniFile;
  Bitmap: TBitmap;
  Colormap: TColorTable;
  Pixels: TByteArray2D;
begin { TTestGifForm.Open1Click }
  IniFilename := Application.Exename;
  IniFilename := ChangeFileExt(Inifilename, '.ini');
  IniFile := TIniFile.Create(IniFilename);
  OpenDialog.InitialDir := Inifile.ReadString('History', 'Last directory for reading', '');
  if OpenDialog.Execute
  then begin
    case CheckType(OpenDialog.Filename) of
      GIF: begin
             GifFile := TGifFile.Create;
             GifFile.LoadFromFile(OpenDialog.Filename);
             Bitmap := GifFile.AsBitmap;
             Image.Picture.Bitmap := Bitmap;
             Bitmap.Free;
             Filename := OpenDialog.Filename;
             Inifile.WriteString('History', 'Last directory for reading', ExtractFilePath(Filename));
           end;
      BMP: begin
             Bitmap := TBitmap.Create;
             Bitmap.LoadFromFile(OpenDialog.Filename);
             Image.Picture.Bitmap := Bitmap;
             GifFile := TGifFile.Create;
             GifFile.AddBitmap(Bitmap);
             Inifile.WriteString('History', 'Last directory for reading', ExtractFilePath(Filename));
           end;
      else ShowMessage('Cannot read file type');
    end; { case }
  end;
  IniFile.Free;
end;  { TTestGifForm.Open1Click }

procedure TTestGifForm.Save1Click(Sender: TObject);
var CanSave: Boolean;
begin { TTestGifForm.Save1Click }
  if not FileExists(Filename)
  then CanSave := True
  else CanSave := MessageDlg('File '+Filename+' already exists, overwrite?',
                             mtConfirmation, [mbYes, mbNo], 0) = mrYes;
  if CanSave
  then GifFile.SaveToFile(Filename)
end;  { TTestGifForm.Save1Click }

procedure TTestGifForm.Saveas1Click(Sender: TObject);
var
  IniFile: TIniFile;
  IniFilename: String;
begin { TTestGifForm.Saveas1Click }
  IniFilename := Application.Exename;
  IniFilename := ChangeFileExt(Inifilename, '.ini');
  IniFile := TIniFile.Create(IniFilename);
  SaveDialog.InitialDir := Inifile.ReadString('History', 'Last directory for writing', '');
  if SaveDialog.Execute
  then begin
    Filename := SaveDialog.Filename;
    Save1Click(Sender);
    Inifile.WriteString('History', 'Last directory for writing', ExtractFilePath(Filename));
  end;
  IniFile.Free;
end;  { TTestGifForm.Saveas1Click }

procedure TTestGifForm.Exit1Click(Sender: TObject);
begin { TTestGifForm.Exit1Click }
  Close
end;  { TTestGifForm.Exit1Click }

procedure TTestGifForm.About1Click(Sender: TObject);
begin { TTestGifForm.About1Click }
  AboutBox.Show;
end;  { TTestGifForm.About1Click }

procedure TTestGifForm.Imageinfo1Click(Sender: TObject);
var GifImageInfoDialog: TGifImageInfoDialog;
begin { TTestGifForm.Imageinfo1Click }
  GifImageInfoDialog := TGifImageInfoDialog.Create(GifFile);
  GifImageInfoDialog.ShowModal;
  GifImageInfoDialog.Free;
end;  { TTestGifForm.Imageinfo1Click }

procedure TTestGifForm.FormClose(Sender: TObject;
  var Action: TCloseAction);
begin
  GifFile.Free;
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -