Просмотр анимации .GIF
Проект состоит из одного модуля.
Краткое описание: что может программа
- Файл анимации .GIF выбирается из папки
- После открытия анимации программа показывает число кадров (Label1)
- Там, где возможно - устанавливается/убирается прозрачность фона.
- Можно показывать каждый кадр отдельно.
Текст модуля Unit1
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, GIFCtrl, Animate, ComCtrls;
type
TForm1 = class(TForm)
btnOpen: TButton;
OpenDialog1: TOpenDialog;
btnQuit: TButton;
cbTransp: TCheckBox;
btnStart: TButton;
btnStop: TButton;
cbGray: TCheckBox;
gbIndex: TGroupBox;
edIndex: TEdit;
GIFA1: TRxGIFAnimator;
UpDown1: TUpDown;
Label1: TLabel;
procedure btnOpenClick(Sender: TObject);
procedure btnQuitClick(Sender: TObject);
procedure cbTranspClick(Sender: TObject);
procedure cbGrayClick(Sender: TObject);
procedure btnStartClick(Sender: TObject);
procedure btnStopClick(Sender: TObject);
procedure edIndexChange(Sender: TObject);
procedure FormResize(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
{ ********* СПРАВКИ: *********************
--------- Установка RXlib ------------
0. Установить path по инструкции
1. Компилировать rxctl7. Для этого открыть rxctl7.bpk - запустится
Делфи, появится окно, в котором установить опции: disigntime only
и Prefix не устанавливать.
Рез-т компиляции будет в Delphi7\Projects\bpl\rxctl7.bpl (и .dcp)
- то же rxctl7, rxdb7, rxbde7
2. Инсталл dclrxall7
3. Меню Делфи | Component | Install Packages | щелк кнопку Add,
выбрать и открыть Delphi7\Projects\bpl\dclrxall7.bpl
- все должно установиться. Проверка: Меню | View | Component List
и в этом списке найти RX-компоненты (например, TRxGIFAnimator).
Из этого же окна можно его поставить на форму (кнопка Add to form)
----------- Настройка пути к файлам *.dcu этой библиотеки -------
У меня это: E:\Program Files\Rx Library\dcu\D7\
Меню Делфи | Project | Options | Directories ... | Search path
- сюда добывать (используя кнопку мастера ... - справа)
E:\Program Files\Rx Library\dcu\D7\
- однако это не все: не находит RXConst.R32 и еще 2.
Смотрю: где они?
- Похоже, здесь E:\Program Files\Rx Library\units\
- Добавляю и это в | Search path - теперь все ОК
------- Описание класса TRxGIFAnimator ----------
(из справки (рус), прилагаемой к RXLib)
.......................................
Компонента предназначена для отображения в Ваших формах анимированных
графических изображений формата GIF.
Рисунок, отображаемый в форме, задается свойством Image.
Номер кадра, отображаемого в настоящий момент, во время выполнения
можно определить по значению свойства FrameIndex.
Вы можете также задать это значение в дизайнере.
Если свойство Animate установлено в True, то изображение анимируется.
Частота смены кадров задана в самом формате GIF и не может быть изменена.
Свойство Transparent определяет, будет ли компонента изображать GIF прозрачным,
используя свойство TGIFImage.TransparentColor.
Компонета также включает в себя свойства, аналогичные свойствам TImage.
- AutoSize
- property Animate: Boolean;
- property Loop: Boolean;
- property AutoSize: Boolean;
- property Transparent: Boolean;
- property FrameIndex: Integer - номер кадра (0..)
- метод Show.
- property Image: TGIFImage;
---------------- Поэтому выпишем TImage из справки Делфи --------
Свойство Image задает графическое изображение формата GIF,
которое может быть использовано для анимации.
- Image.property Count: Integer; - число кадров,
доступ к каждому: Image.Frames[Index];
- Image.property TransparentColor: TColor;
- Image.property Frames[Index: Integer]: TGIFFrame;
- Image.property RepeatCount: Integer;
- Image.LoadFromFile|Stream
- Image.SaveToFile|Stream
- Image.property BackgroundColor: TColor;
---- Как подключить эту (или другую) справку ко встроенной справке Делфи? ---
1. Меню | Help | Customize
2. Закладка Contents. Menu | Edit | Add Files - и добавить RXD6.TOC
(из папки E:\Program Files\Rx Library\help\russian\)
3. Закладка Index. Menu | Edit | Add Files - и добавить RXD6.HLP
4. Закладка Link. Menu | Edit | Add Files - и добавить RXD6.HLP
5. Menu | File | Save Project
6. Это все
}
procedure TForm1.btnOpenClick(Sender: TObject);
begin
If OpenDialog1.Execute then
begin
GIFA1.Parent := Self;
GIFA1.Image.LoadFromFile(OpenDialog1.FileName);
GIFA1.Visible := true;
GIFA1.Animate := true;
Label1.Caption:= 'Всего: '+ IntToStr(GIFA1.Image.Count)+
' кадров';
UpDown1.Min:=0;
UpDown1.Max:= GIFA1.Image.Count-1;
end;
end;
procedure TForm1.btnQuitClick(Sender: TObject);
begin
Application.Terminate;
end;
procedure TForm1.cbTranspClick(Sender: TObject);
begin
If cbTransp.Checked then GIFA1.Transparent := true else
GIFA1.Transparent := false;
end;
procedure TForm1.cbGrayClick(Sender: TObject);
begin
If cbGray.Checked then GIFA1.Image.Grayscale(true)
else GIFA1.Image.Grayscale(false);
end;
procedure TForm1.btnStartClick(Sender: TObject);
begin
GIFA1.Animate := true;
end;
procedure TForm1.btnStopClick(Sender: TObject);
begin
GIFA1.Animate := false;
end;
procedure TForm1.edIndexChange(Sender: TObject);
begin
GIFA1.Animate := false;
GIFA1.FrameIndex:= StrToInt(edIndex.Text);
end;
procedure TForm1.FormResize(Sender: TObject);
begin
Label1.Caption:= 'Всего: '+ IntToStr(GIFA1.Image.Count)+
' кадров';
end;
end.
Некоторые особенности проекта:
- Для этого проекта пришлось установить в Делфи дополнительную библиотеку
компонентов: RXLib, которая содержит компонент TRxGIFAnimator. Но можно немного иначе - подключить только необходимые модули и объект класса TRxGIFAnimator создавать во время выполнения.
- Полезные выписки из справочной системы см. в тексте модуля.
Скачать RAR-архив исходников (72 Кб)
Скачать RAR-архив исходников + .exe(270 Кб)