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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.12.2015, 12:56   #1
Evil_Net
Пользователь
 
Регистрация: 04.08.2015
Сообщений: 48
По умолчанию Слайд-шоу на PaintBox

Делаю примитивную смену фоток на PaintBox.

В загрузке картинок проблем нету.
В OnPaint пишу (пример 1 из эффектов смены картинки
Код:
тут загрузка следующей картинки в bmNext.... 

for i := 0 to bmNext.Height do
  begin
    Application.ProcessMessages;
    Sleep(2);
    BitBlt(PaintBox1.Canvas.Handle, 0, i, bmNext.Width, 1, bmNext.Canvas.Handle, 0, i, SRCCOPY);
  end;
PaintBox1.Invalidate;
Все отлично работает, но после показа анимации, хочется сделать задержку в секунд 5 до следующей смены картинки, ну если сделать тупо Sleep(5000), то картинки показываются, но программа подвисает и остановить показ слайдов сложно
Evil_Net вне форума Ответить с цитированием
Старый 11.12.2015, 13:09   #2
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

таймер !
установка на 5000 мс.

блокирование(отключение) таймера
загрузка картинки из файла (в bmnext !!!)
установка состояния прорисовки.

и прорисовка (анимация) уже имеющейся картинки.
обратное включение таймера.
программа — запись алгоритма на языке понятном транслятору
evg_m вне форума Ответить с цитированием
Старый 11.12.2015, 13:11   #3
Filka
Форумчанин
 
Регистрация: 29.10.2015
Сообщений: 273
По умолчанию

Может, пригодится:
http://www.delphiarea.com/products/d...nents/picshow/
http://www.delphisources.ru/pages/so...t-zsimage.html
http://www.efg2.com/Lab/ImageProcessing/SlideShow.htm
Filka вне форума Ответить с цитированием
Старый 11.12.2015, 13:11   #4
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

меняйте логику работы.
никакого цикла не нужно.
кидайте на форму таймер, задавайте ему нужный интервал.
заводите глобальную переменную (или добавьте свойство(property) для вашей формы.
в событии создания формы этой переменной присваивайте индекс первой картинки
и запускайте таймер.

в событии обработчике таймера выводите картинку (путём вызова метода onPaint, который выводит картинку по заданному индексу) и наращивайте переменную с индексом.
При достижении конечного значения в индексе, выключайте таймер.
всё.
Serge_Bliznykov вне форума Ответить с цитированием
Старый 11.12.2015, 13:54   #5
Evil_Net
Пользователь
 
Регистрация: 04.08.2015
Сообщений: 48
По умолчанию

В том то и дело, что с таймером пробовал, не работало. Сейчас еще раз заново сделал и все работает) видимо ошибка в коде была!
Evil_Net вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Слайд-шоу Zurich Qt и кроссплатформенное программирование С/С++ 11 22.07.2013 17:00
Слайд шоу (JS) vprsc JavaScript, Ajax 3 26.11.2012 01:07
слайд шоу violettta HTML и CSS 4 06.01.2012 15:08
Слайд-шоу Алекссс Помощь студентам 2 01.11.2011 16:43
Слайд-шоу Алекссс Мультимедиа в Delphi 0 01.11.2011 12:02