Анимация на рабочем столе. Сегодня мы создадим анимированную картинку на рабочем столе, которую можно перетаскивать мышкой в любое место рабочего стола. Предлагаю вот такое решения реализации данной задачи. Так как стандартные компоненты Delphi не поддерживают анимированные изображения GIF, мы возьмем любое анимированное изображений и с помощью программ Adobe ImageReady CS и Adobe Photoshop CS разобьем анимацию на слои и сохраним каждый слой в формате BMP c именами 1.BMP, 2.BMP и т.д. Полученные изображения мы будем выводить не на сам рабочий стол, а на форму, дело в том, что мы сделаем форму не видимой, а компонент видимым и получится так, что анимированное изображение находится на рабочем столе. И при этом все папки, ярлыки буду доступны… Как разбивать анимированное изображение на отдельные кадры с помощью программ Adobe ImageReady CS и Adobe Photoshop CS, если интересно, то я могу рассказать в следующий раз, а пока скачать уже готовое по кадровое изображение можно здесь. Давайте запустим Delphi и на форму кинем компонент TImage из вкладки Additional. В программном модуле unit1 объявляем в разделе var следующие переменные. var Form1: TForm1; i:integer;// количество кадров в изображении file_name:string;// имя файла кадра изображения mouse:tmouse;// необходима для определения координат мыши xn,yn:integer;//начальные координаты мыши при нажатии левой кнопки мыши |
Добавим компонент TTimer из вкладки System и свойство Interval ставим 70. Создаём обработчик событий на таймере OnTimer кликаем по нему 2 раза. И пишем следующий код: procedure TForm1.Timer1Timer(Sender: TObject); begin if i<20 then i:=i+1 else i:=1; file_name:=inttostr(i); image1.Picture.LoadFromFile('gif\'+file_name+'.bmp');//Формируем путь и имя файла. У меня картинки с изображениями находятся в папке gif end; |
Для компонента компонент Image1 пропишем еще два события OnMouseDown и OnMouseMove. Для OnMouseDown пишем: procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer); begin yn:=mouse.CursorPos.Y-(form1.Top);//запоминаем координаты мыши xn:=mouse.CursorPos.X-(form1.left); end; |
Для OnMouseMove пишем: procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer); begin if ssleft in shift then begin //если нажата левая кнопка мыши то двигаем форму form1.Top:=mouse.CursorPos.Y-yn; form1.left:=mouse.CursorPos.X-xn; end; end;
|
Для события OnCreate формы пропишем:
procedure TForm1.FormCreate(Sender: TObject); begin i:=1;//устанавливаем начальный кадр end; |
Дальше сделаем форуму не видимой. Выделяем форму и свойство Color ставим clWhite то есть белый, свойство TransparentColor ставим True, свойство TransparentColorValue ставим clWhite, свойство Position ставим poMainFormCenter, а свойство BorderStyle ставим bsNone; Размеры формы (свойства Width - ширина и Height - высота) и размеры компонента Image1 (свойства Width и Height) устанавливаем равными размерам изображения. Размеры изображения можно посмотреть в свойствах файла изображения, щелкнув по нему правой кнопкой мыши и выбрав пункт Свойства-> подробно. В нашем случае Width=200 и Height=200) запускаем программу.
Ну и на по следок, я покажу как скрыть кнопку с панели задач. Для этого выбираем в меню Project -> View Source и приводим код к следующему виду: program Project1; uses Forms, windows, Unit1 in 'Unit1.pas' {Form1}; {$R *.res} begin Application.Initialize; Application.CreateForm(TForm1, Form1); ShowWindow(Application.Handle,sw_HIDE);//строка скрывает кнопку формы с панели задач Application.Run; end. |
Внимание закрыть такое приложение можно через диспетчер программ Windows (процесс Progect1).
Нравится
Скачать исходник.
Начиная с Delphi 2007 в ее поставку входит модуль GifImg, который позволяет проигрывать Gif анимацию. Ниже привожу пример его использования (Gif анимация в Delphi) : На форме надо разместить компонент TImage и TButton и в папку с проектом скопировать Gif файл. unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls, GifImg;
type TForm1 = class(TForm) Timer1: TTimer; Image1: TImage; Button1: TButton; procedure Button1Click(Sender: TObject); procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } public { Public declarations } end;
var Form1: TForm1; Gif: TGifImage;
implementation
{$R *.dfm}
//При нажатии на кнопку загружаем анимацию в Image1 procedure TForm1.Button1Click(Sender: TObject); begin //создаем объект gif Gif := TGifImage.Create; //загружаем gif файл Gif.LoadFromFile('имя файла.gif'); //включаем анимацию Gif.Animate := True; //задаем ширину и высоту объекта Image1 по размерам Gif Image1.Width:=Gif.Width; Image1.Height:=Gif.Height; //Подключаем Image1 к Gif Image1.Picture.Assign(Gif); end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin //освобождаем объект Gif Gif.Free; end;
end.
|