Пятница, 19.04.2024, 02:34
Приветствую Вас Гость

Не ошибается тот, кто ничего не делает.
Но и ничего не делать - ошибка.

Эмиль Кроткий

Меню сайта
Категории раздела
Delphi [12]
Материалы, связанные с программирование на Delphi
Форма входа

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0


















Тиц
Главная » 2011 » Июнь » 30 » Анимация на рабочем столе.
17:05
Анимация на рабочем столе.
Анимация на рабочем столе.

Создаем анимацию на рабочем столе с помощью Delphi.        Сегодня мы создадим анимированную картинку на рабочем столе, которую можно перетаскивать мышкой в любое место рабочего стола.

Предлагаю вот такое решения реализации данной задачи. Так как стандартные компоненты 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.


[b]Код программы[/b]


Внимание закрыть такое приложение можно через диспетчер программ
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.




Категория: Delphi | Просмотров: 15925 | Добавил: xaramamburu | Рейтинг: 5.0/3
Всего комментариев: 1
1 semen  
0
данная стать помогла разобраться кое в каких вопросах book , автору респект respect

Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Календарь
«  Июнь 2011  »
ПнВтСрЧтПтСбВс
  12345
6789101112
13141516171819
20212223242526
27282930
Архив записей
Поиск
Наш опрос
Оцените мой сайт
Всего ответов: 585
Уголок общения



Copyright MyCorp © 2024Конструктор сайтов - uCoz