Анимация в VB (электронный спидометр) ПРОБЛЕМА с мерцанием

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Анимация в VB (электронный спидометр) ПРОБЛЕМА с мерцанием

Сообщение GRS » 15.08.2006 (Вт) 14:01

Приветствую :D

У меня большой GIF (150 кадров, весит 700kb) - его надо проиграть "чисто". Это спидометр. Мало того - нужен контроль, т.е. самостоятельно указывать кадр с которого играется и по который. Есть AniGif.ocx так вот там все здорово, могу указать кадр, могу остановить, могу просто слайдшой устроить (я таймером проигрываю, если нужна скорость), но он портачит - остаются артефакты от предыдущего кадра.

Контрол tyomicha у меня вовсе не играет, просто стоит картинка на первом и все. Да и вообще - есть там возможность указать отображаемый кадр?

Чем проигрывать, подскажите пожалуйста...
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.08.2006 (Вт) 17:17

Если есть подозрение, что это баг в моём контроле -- дай свой гиф, проверю.
Но вообще-то для статичных изображений больше подходят имиджлисты, чем как-будто-бы-анимированные гифы.
Изображение

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 15.08.2006 (Вт) 17:54

Что за имидж-листы? Можно подробней...?
Вложения
SUBARU(SPD_COLOR_70).gif
(464.44 Кб) Скачиваний: 74
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 15.08.2006 (Вт) 18:13

Имидж-листы лежат в Кирпичах.


Твой гиф моим контролом не анимируется потому, что там стоят нулевые межкадровые задержки. Чтобы заанимировался, добавь в clsFrame после "DelayMS = GIF.DelayMS" строчку "If 0 = DelayMS Then DelayMS = дефолтная_задержка". Дефолтную задержку можешь выбрать по своему вкусу.
Изображение

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 16.08.2006 (Ср) 7:22

Приветствую,

tyomitch, поиск дал мне лишь одну тему и ту - мою, вот эту. Что за "имидж-листы"? Дай ссылку, если не трудно. Что за контрол или это реализация какая-то, для чего применяется. Я уж молчу про "кирпичи". Это так проекты называют? :wink:

Про задержку - да, стоит ноль.
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.08.2006 (Ср) 9:56

Кирпичи: http://bbs.vbstreets.ru/viewforum.php?f=28
Имидж-лист там сам найдёшь?

----
Если ты знаешь, что задержка стоит 0, то почему же тебя удивляет, что мой контрол твой гиф не анимирует?
Изображение

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 16.08.2006 (Ср) 18:27

Почему удивляет? Потому что все остальные анимируют. Я поставил 0, т.к. это дает самую быструю анимацию.

Про "листы", скачал... я вообще не понял, чем он мне подходит. "...продвинуто нарисовать картинку 2" - это что такое? Invisible area какя-то... Если честно, вообще не догоняю - зачем ты мне его посоветовал.

Я могу в твоем контроле начать анимацию с какого-то определенного кадра, там есть такое свойство? Задать его как?
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.08.2006 (Ср) 18:49

По спецификации, 0 означает "остановить до действий пользователя", а самую быструю анимацию даёт 1.

GRS, если у тебя есть ICQ, наверное легче будет обсудить вопрос там, чем здесь обмениваться постами с интервалом в полсутки :-)
Изображение

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 16.08.2006 (Ср) 20:29

:wink: Аськи нет, не приемлю и не использую.
1 - это что за один? Микро, мили, просто секунда... Я анимацию создаю в Adobe ImageReady, да, и в принципе - файл абсолютно везде именно проигрывается даже с мои установленным нолем, это исключительно особенность твоего приложения. Ноль = NO_DELAY.

Хотя, мы тут мило общаемся, но откровенно не сдвинулись. Вопрос все тот же - ты закладывал возможность о которой я выше писал (воспроизведение с произвольного кадра)?

Про имэйдж-лист. Почему ты мне его посоветовал? Вообще, я файлик графический открыл - этот танк должен крутиться, "анимироваться", только ничего не происходит. Как им пользоваться - так и не разобрался. Зачем-то есть возможность Drag&Dpor - что она там даёт? А третья кнопка просто рисует полигон этого танка. Короче, такие дела.
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 16.08.2006 (Ср) 20:52

Задержка в гифах хранится в миллисекундах.

Ещё раз, если тебя не устраивает моё толкование гифовской спецификации -- все карты тебе в руки. Исходники у тебя есть, я даже показал, какую строчку нужно править :-)

Возможность воспроизведения с произвольного кадра не заложена в формат GIF, т.к. хранится только разница между соседними кадрами. Однако, можно "втихую" промотать гиф до нужного кадра, отрисовывая в невидимом буфере все такие разницы подряд.

Такая возможность в моём контроле есть, хотя и не выставлена наружу. (В переменной CurrentFrame хранится номер текущего кадра, процедура tmrFrame_Timer отрисовывает следующий кадр. Хочешь -- сделай их публичными и юзай по своему желанию.)

Имидж-лист -- он не для анимации, а для работы с коллекциями статических картинок. Я до сих пор не могу понять: твой гиф -- это анимация, или 136 независимых картинок, запихнутых в один файл?
Изображение

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 16.08.2006 (Ср) 21:37

tyomitch, я уж не знаю, как тебе ответить на твой вопрос. Создавался мой GIF фактически в "фотошопе", я создал 135 слоев, в каждом слое спидометр, только стрелка меняется. Передал слои в имэйджрэди, "сделал кадры из слоев" и сохранил гифом, указав отсутствие задержки между кадрами.
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.08.2006 (Ср) 21:43

Да, это называется 138 независимых картинок.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Бяка
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 219
Зарегистрирован: 21.09.2005 (Ср) 21:28

Сообщение Бяка » 16.08.2006 (Ср) 23:59

а не проще сделать 1 картинку с циферблатом (без стрелки) а стрелку приресовывать програмно т.е. другую картинку(стрелку) крутить на первой?

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.08.2006 (Чт) 0:01

Не проще, разумеется.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 17.08.2006 (Чт) 0:05

А по мойму проще.

GSerg
Объясни почему так, и почему даже разумеентся?
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.08.2006 (Чт) 0:11

Потому что выводить повёрнутую на определённый угол картинку - это медленее, угловатее и сложнее, чем выводить заранее нарисованную.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 17.08.2006 (Чт) 0:14

FoxCBmp - работает быстро. С антиалиасингом.


За то 2 картинки - сам гуадж и стрелка. Всё.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 17.08.2006 (Чт) 9:11

Я пробывал вращать стрелку, на моём черном фоне видны "зазубрины" от прозрачной маски и получается вообще чертичмо. Да и качество "вращаемого" рисунка оставляет желать лучшего. Хотя, я находил контрол со свойством Rotate, но, повторюсь - не удовлетворяет это моим требованиям. Нужна качественная отрисовка.
Какие будут варианты еще? FoxCBmp - это контрол для VB6?
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 17.08.2006 (Чт) 9:22

Стрелка -- достаточно простой элемент и его можно отрисовывать вручную. Т.е. растровая подложка и стрелка, рисуемая в рантайме.
Lasciate ogni speranza, voi ch'entrate.

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 17.08.2006 (Чт) 10:34

GRS
FoxCBmp это DLL.

Юзабельная из ВБ тоже.

На примерчик.
Вложения
fox-example-for-XXX.rar
example
(188.68 Кб) Скачиваний: 79
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 17.08.2006 (Чт) 17:29

alibek, моя стрелка довольно непростая. будь она простой использовал бы LINE.
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

GRS
Продвинутый пользователь
Продвинутый пользователь
 
Сообщения: 186
Зарегистрирован: 29.02.2004 (Вс) 22:23
Откуда: Казахстан, Алматы

Сообщение GRS » 17.08.2006 (Чт) 17:34

Хакер ты меня буквально выручил! ВСЕМ ОГРОМНОЕ СПАСИБО!!! tyomitch, тебе тоже отдельное спасибо :wink:
Встану рано утром, выпью чашку ртути... Всё равно я сдохну в этом институте...

keks-n
Доктор VB наук
Доктор VB наук
Аватара пользователя
 
Сообщения: 2509
Зарегистрирован: 19.09.2005 (Пн) 17:17
Откуда: г. Москва

Сообщение keks-n » 17.08.2006 (Чт) 17:43

Посредством нескольких Line можно нарисовать всё что угодно.
Изображение


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 32

    TopList  
cron