Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 12.02.2012, 20:50   #1
QProfessional
 
Регистрация: 12.02.2012
Сообщений: 6
Вопрос Поочередная смена изображения.

Привет программисты, мне очень нужно сделать поочередную смену изображений в TImage, всего 7 изображений. Помогите, это очень важно.:confused :
QProfessional вне форума Ответить с цитированием
Старый 12.02.2012, 20:51   #2
QProfessional
 
Регистрация: 12.02.2012
Сообщений: 6
По умолчанию

Именно поочередную смену, никаких Gif-ов.
QProfessional вне форума Ответить с цитированием
Старый 13.02.2012, 02:32   #3
Jleksern
Форумчанин
 
Аватар для Jleksern
 
Регистрация: 14.10.2011
Сообщений: 137
По умолчанию

Как оно примерно должно чередоваться?
хм.. если просто, ну тогда просто воспользуйся таймером. Делов то.
Jleksern вне форума Ответить с цитированием
Старый 13.02.2012, 03:05   #4
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

изображения в папке должны быть пронумерованы и иметь формат bmp.
Код:
const
  cFolder='c:\папка\';  //папка с зображениями
  cMax=7; //Максимум изображений
var
 i:integer;
begin
  for i:=0 to cMax do
  begin
  Image1.Picture.LoadFromFile(cFolder+IntTOStr(i)+'.bmp');
  Image1.Repaint;
  end;
end;
это так сказать "работает, и хорошо".

По хорошему, надо использовать TSearchRec,FindFirst,FindNext,FindC lose для функции поиска изображений.
Далее загрузку JPG изображений через TJPEGImage.
И все.
Человек_Борща вне форума Ответить с цитированием
Старый 13.02.2012, 09:06   #5
phomm
personality
Старожил
 
Аватар для phomm
 
Регистрация: 28.04.2009
Сообщений: 2,882
По умолчанию

Я бы посоветовал создать массив на 7 картинок (bmp png jpg - как хотите, компонентов для разных форматов - куча). Загрузить в них все нужные картинки из файла. Это всё при создании формы можно сделать. Также создать переменную cntr целого типа. Эти 2 вещи можно сделать глобальными, а можно и полями формы. Не забыть при уничтожении формы уничтожить все объекты из массива.
Потом естественно таймер. По таймеру делаем
Код:
Image1.picture := ImagesArray[cntr];
cntr := (cntr+1) mod 7;
В итоге получаем зацикленную смену картинок, но без постоянного чтения диска (как у Человек_Борща ), тут уж сами смотрите, что Вам выбрать.

Кстати, в варианте Человек_Борща сделана опечатка и получается 8 картинок - от 0 до 7 цикл, так что, ТС, запомните, если копипастите, то не бездумно, а смотрите и проверяйте всё.

Последний раз редактировалось phomm; 13.02.2012 в 09:11.
phomm вне форума Ответить с цитированием
Старый 13.02.2012, 09:57   #6
QProfessional
 
Регистрация: 12.02.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Jleksern Посмотреть сообщение
Как оно примерно должно чередоваться?
хм.. если просто, ну тогда просто воспользуйся таймером. Делов то.
В том то и дело что таймером не взять это, он сразу переходит к конечному изображению.
QProfessional вне форума Ответить с цитированием
Старый 13.02.2012, 10:02   #7
QProfessional
 
Регистрация: 12.02.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
изображения в папке должны быть пронумерованы и иметь формат bmp.
Код:
const
  cFolder='c:\папка\';  //папка с зображениями
  cMax=7; //Максимум изображений
var
 i:integer;
begin
  for i:=0 to cMax do
  begin
  Image1.Picture.LoadFromFile(cFolder+IntTOStr(i)+'.bmp');
  Image1.Repaint;
  end;
end;
это так сказать "работает, и хорошо".

По хорошему, надо использовать TSearchRec,FindFirst,FindNext,FindC lose для функции поиска изображений.
Далее загрузку JPG изображений через TJPEGImage.
И все.

Интересно, а можно здесь при этом коде использовать png? Сейчас попробовал, не получается.
QProfessional вне форума Ответить с цитированием
Старый 13.02.2012, 10:24   #8
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

С использование TPngImage можно, в случае если у вас delphi 2009+
Человек_Борща вне форума Ответить с цитированием
Старый 13.02.2012, 10:25   #9
QProfessional
 
Регистрация: 12.02.2012
Сообщений: 6
По умолчанию

Цитата:
Сообщение от phomm Посмотреть сообщение
Я бы посоветовал создать массив на 7 картинок (bmp png jpg - как хотите, компонентов для разных форматов - куча). Загрузить в них все нужные картинки из файла. Это всё при создании формы можно сделать. Также создать переменную cntr целого типа. Эти 2 вещи можно сделать глобальными, а можно и полями формы. Не забыть при уничтожении формы уничтожить все объекты из массива.
Потом естественно таймер. По таймеру делаем
Код:
Image1.picture := ImagesArray[cntr];
cntr := (cntr+1) mod 7;
В итоге получаем зацикленную смену картинок, но без постоянного чтения диска (как у Человек_Борща ), тут уж сами смотрите, что Вам выбрать.

Кстати, в варианте Человек_Борща сделана опечатка и получается 8 картинок - от 0 до 7 цикл, так что, ТС, запомните, если копипастите, то не бездумно, а смотрите и проверяйте всё.
var cntr: Integer;
ImagesArray: array of TPicture;
begin
ImagesArray[cntr].LoadFromFile('Img'+IntToStr(cntr)+ '.png');
//Image1.picture.Assign(ImagesArray[cntr]);
Image1.Picture:=ImagesArray[cntr];
cntr := (cntr+1) mod 7;
end;


Может я что не до понимаю, что здесь может быть не так?
QProfessional вне форума Ответить с цитированием
Старый 13.02.2012, 10:32   #10
QProfessional
 
Регистрация: 12.02.2012
Сообщений: 6
По умолчанию

Всё отлично, получилось. Спасибо всем за ответы.
Тут оказалось всё просто:

Image1.Picture.LoadFromFile('111\'+ IntToStr(Timer1.Interval)+'.Png');
Timer1.Interval:=Timer1.Interval+1;
QProfessional вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
[B]Смена ИП[/B] xpams Работа с сетью в Delphi 0 08.01.2012 18:30
Смена цвета изображения при смене параметров faust-v JavaScript, Ajax 4 19.09.2011 11:46
поочередная имитация нажатия клавиш usb72 Общие вопросы Delphi 4 16.08.2011 01:44
Смена изображения при наведении не на белую область Alex Cones Общие вопросы Delphi 6 10.05.2009 17:17
Чтение изображения из базы данных, Вместо изображения - "System.Byte[]" ruelCrow Общие вопросы .NET 3 10.07.2008 23:29