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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.02.2011, 04:25   #1
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
Стрелка Ускорить переход между Image

Код:
      Image2.Left := Form1.Width;
      Image2.Top := 0;
      repeat
        Image2.Left := Image2.Left - 1;
        Application.ProcessMessages;
      until Image2.Left = 0;
если форма не на весь екран(200x150), движение происходит норамльно, но если делать fullscreen(1280x1024),
начинает зависать, даже если отнимать по 10 или даже 100, причем ето не самыи сложныи переход, как мне ето ускорить?
если есть предложения осуществить показ SlidShow по другому, я весь внимания

P.S. Application.ProcessMessages; уберать нельзя, иначе бегущая строка зависает пока переход проходит
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 05.02.2011, 11:20   #2
asmodey1
Подтвердите свой е-майл
 
Регистрация: 19.12.2010
Сообщений: 808
По умолчанию

А DoubleBuffered:=True у вас прописано ?
И еще. Единичка - это мало. Сделайте хотя бы Image2.Left - 2, плавность от этого не уменьшится.
asmodey1 вне форума Ответить с цитированием
Старый 05.02.2011, 11:26   #3
MyLastHit
Очень суровый
Участник клуба
 
Аватар для MyLastHit
 
Регистрация: 17.12.2009
Сообщений: 1,988
По умолчанию

Вообще не въезжаю зачем тут цикл... Пока цикл выполняется - программа висит.
В таймер вот это вписать:
Код:
       if Image2.Left>0 then
       begin
       Image2.Left := Image2.Left - 1;//тут подогнать значение по лучше, наверняка не 1
       Application.ProcessMessages;
       end;
И интервал поставить 10.
Ненавижу быть как все, но люблю, чтобы все были как я.
MyLastHit вне форума Ответить с цитированием
Старый 05.02.2011, 12:18   #4
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Код:
procedure TForm3.FormCreate(Sender: TObject);
begin
  Form3.Left := Screen.Monitors[Screen.MonitorCount - 1].Left;
  Form3.Top := Screen.Monitors[Screen.MonitorCount - 1].Top;
  Width := Screen.Monitors[Screen.MonitorCount - 1].Width;
  Height := Screen.Monitors[Screen.MonitorCount - 1].Height;
  DoubleBuffered := True;
end;

...
  Image1.Picture.Bitmap := TBitMap(List[1][Картинка1]);
  Image1.Left := 0;  //
  Image1.Top := 0;  // Left Top не меняюца
...

  case TsComboBox(List[4][EffIndex]).ItemIndex of //номер еффекта перехода
    0: begin
      Image2.Left := - Image2.Width; // помешаю картинку в левои части
      Image2.Top := 0;
      Image2.Picture.Bitmap := TBitMap(List[1][Картинка2]); // присваиваю следуюшее изображение
      repeat  // переход
        Image2.Left := Image2.Left + 10;
        Application.ProcessMessages;
      until Image2.Left >= Image1.Left;
      Image1.Picture.Bitmap := TBitMap(List[1][Картинка1]); // присваиваю следуюшее изображение главному Image, что не движеца
      Image2.Left := Form2.Width;  // убираю временыи Image
      Image2.Top := Form2.Height;
    end;
Цитата:
asmodey1 А DoubleBuffered:=True у вас прописано ?
И еще. Единичка - это мало. Сделайте хотя бы Image2.Left - 2, плавность от этого не уменьшится.
без изменении
Цитата:
MyLastHit Вообще не въезжаю зачем тут цикл...
вроди разницы нет, как мне кажеца
Цитата:
MyLastHit Пока цикл выполняется - программа висит.
без Application.ProcessMessages;
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 05.02.2011, 15:28   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Ну не знаю... Во-первых я бы вынес движение в отдельный поток, а во-вторых пожалуй избавился от медленного TImage в пользу чистого WinAPI.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.02.2011, 15:35   #6
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

Цитата:
Во-первых я бы вынес движение в отдельный поток
даже не буду лищнии раз спрашиват, подскажи где почитать?
за пример вообще буду благодарен...
Цитата:
во-вторых пожалуй избавился от медленного TImage в пользу чистого WinAPI
в первом хоть смысл того что искать понял, как можно Image заменит WinApi?
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 05.02.2011, 15:39   #7
veniside
Старожил
 
Регистрация: 03.01.2011
Сообщений: 2,508
По умолчанию

> как мне ето ускорить?

Переписать всё к чертям через BitBlt() или DirectX, раз уж полноэкранные картинки взялись двигать с шагом в 1 пиксель и FPS построенном на принципе "пока проц не умрёт".
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
veniside вне форума Ответить с цитированием
Старый 05.02.2011, 16:08   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
даже не буду лищнии раз спрашиват, подскажи где почитать?
Уф... Пожалуй нет книг где бы описывалось движение картинки в потоке...
Есть просто статьи о том как потоки использовать в Делфи.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 05.02.2011, 16:17   #9
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

подскажите с какими компонентами DirectX работат для организации слаид шоу с переходами
VirusN13
ArtGrek вне форума Ответить с цитированием
Старый 05.02.2011, 16:18   #10
ArtGrek
DelphiProger
Участник клуба
 
Аватар для ArtGrek
 
Регистрация: 14.11.2010
Сообщений: 1,023
По умолчанию

подскажи где почитать о том как потоки использовать в Делфи?)
я об етом
VirusN13
ArtGrek вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Переход между Input Des JavaScript, Ajax 3 22.11.2010 06:58
Переход между листами Fezdipekla Microsoft Office Excel 2 14.06.2010 20:27
Переход между компонентами UnChanter Помощь студентам 2 11.01.2010 01:08
Переход между формами! Lemo Общие вопросы Delphi 5 05.02.2009 15:50
Переход между компонентами stepchild Общие вопросы Delphi 5 29.05.2008 20:07