Панорама, Как сделать панораму? |
Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.
Наладить общение поможет, если вы подпишитесь по почте на новые темы в этом форуме.
Панорама, Как сделать панораму? |
Alx |
Сообщение
#1
|
Гость |
Люди, подскажите пожалуйста. Мне необходимо сделать панораму. Длинная кортинка, которая едет по форме. Но когда я двигаю компонент Image по форме image.left:=image.left+1 картинка как будто мерцает и на какоето время пропадает. Мне сказали что так сделать не получится. А как же тогда мне сделать панораму? Заранее спасибо! Alx
|
BlackShadow |
Сообщение
#21
|
Гость |
Бродяжник, надеюсь к критике ты относишься нормально :p2:
Вот это сильно по глазам ударило: Timer1.Enabled:=false; Впринципе как и это x:=0; Можно было бы оформит как инициализированную переменную. Далее. Можно было бы вырезать кнопочку "maximize", а то смотриться смешно Итого. Вариант неплохой. При маденьких картинках всё "на ура". Поставил большую - мерцало только в путь. Я бы порекомендовал заменить обработчик таймера таким образом, чтобы он вызывал InvalidateRect в нужной области а не Repaint (кнопкам-то зачем лишний раз перерисовывться ). |
Alx |
Сообщение
#22
|
Гость |
Спасибо! Вечером, как только доберусь до Делфи, буду пробовать.
|
Бродяжник |
Сообщение
#23
|
Бывалый Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация: 3 |
Нормально отношусь! Ламер я... зато со стажем! Таймер я в программе отключил, чтобы наглядно было видно, что при старте программы он должен быть отключен. Когда его на форму кидаешь, он по умолчанию включен. Конечно, его нужно отключать прямо в Инспекторе объектов. А про инициализированные переменные в Дельфи я и правда не знал... я всю жизнь думал, что это привилегия Си. И с InvalidateRect vs Repaint тоже справедливо. А мерцать все равно будет на больших картинках, другое дело, что без двойной буфферизации мерцать будет гораздо мерцательнее.
|
BlackShadow |
Сообщение
#24
|
Гость |
В зависимости от версии переменные могут быть инициализированы или так Const x:Integer=0; или так Var x:Integer=0;
Первый вариант ещё и в паскале прокатывает. А ещё так можно статические переменные в функциях объявлять... Но это уже к теме не относится... А про InvalidateRect vs Repaint ещё как справедливо. Насколько я помню так или иначе Repaint сводится к InvalidateRect(Handle,ClientRect). Незачем в таком случае перерисовывать всё... а ещё мысль извратная появилась: сделать 2 TImage, расположить их друг на друге и делать так: 1). Рисуем в "спрятанном" 2). Выносим его вперёд. Дальше вроде понятно. Что-то типа "видеостраницы своими руками". Вот в душе не знаю что это даст. Но попробывать можно... Жаль что Delphi под рукой нет |
Бродяжник |
Сообщение
#25
|
Бывалый Группа: Пользователи Сообщений: 206 Пол: Мужской Репутация: 3 |
Version 1.1.
Прикрепленные файлы PANORAMB.ZIP ( 11.39 килобайт ) Кол-во скачиваний: 224 |
P@sh@ |
Сообщение
#26
|
Бывалый Группа: Пользователи Сообщений: 180 Пол: Мужской Репутация: 2 |
Alx
Ну а почему у меня процедура не вызывается? Этот метод вызывается автоматически... а что не рисует... может картинка не подгрузилась? я же рабочий пример кинул... PS: картинка у меня была большая (1024х768) и ничего не мерцало абсолютно |
Alx |
Сообщение
#27
|
Гость |
Ой! Всё супер! Не мерцает! СПАСИБОЧКИ!
Вот только если вы тут такие умные собрались, может скажите, пожалуйста, можно так картинку не БМП, а ЙПГ крутить????? И если да, то как? |
BlackShadow |
Сообщение
#28
|
Гость |
А что jpg нельзя загрузить так же как и bmp? Тогда попроьуй TPaintBox что ли... Позабывал уже всё с этим .Net
|
P@sh@ |
Сообщение
#29
|
Бывалый Группа: Пользователи Сообщений: 180 Пол: Мужской Репутация: 2 |
Alx
насчет bmp и jpeg - я использовал класс TBitmap для загрузки картинки... есть и другие - TJPEGImage, например... но лучше использовать универсальный TPicture - он сам распознает картинку по расширению файла, а рисовать можно через его свойство Graphic: что-то типа form1.canvas.draw(...., picture1.graphic); |
Текстовая версия | 25.05.2024 13:55 |