· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Анимация текста

. 1 . 2 . 3 . 4 . >>

Посл.отвђт Сообщенiе


Дата: Авг 28, 2003 00:42:56

Как осуществить сабж, нужно чтоб текст плыл сверху вниз.
Я попробовал подвигать текст созданный с помощью GDI
дык он вообще пропал из окна :)


Дата: Авг 28, 2003 03:01:58

Стереть
TextOut(hdc,X0,Y0,"Ля-ля-ля",8);
Подождать
Стереть
TextOut(hdc,X0,Y0 + delta,"Ля-ля-ля",8);
Подождать
Стереть
TextOut(hdc,X0,Y0 + 2 * delta,"Ля-ля-ля",8);
Подождать
... и т.д.
Для стирания можно использовать FillRect

дык он вообще пропал из окна :)
Давай сюда код :)


Дата: Авг 28, 2003 03:07:25

[ Quantum: Давай сюда код :)]

Я стесняюсь свою галимотью сюда постить :)
А, значит его нужно сначала стереть и только потом нарисовать заново,
нужно ещё подумать.
А если я уже на окно натянул bitmap текст поверх него напишется?


Дата: Авг 28, 2003 04:19:53

Текст скользит поверх BMP или вместе с BMP? В первом случае надо прорисовывать часть битмапа перед каждым сдвигом текста. Можно задать таймер (на 1сек. или меньше) и при каждом WM_TIMER затирать ту часть, что с текстом (InvalidateRect, например); восстановить недостающую часть BMP; отрисовать текст с прозрачным фоном. Если всё это грамотно проделать, мерцания быть не должно.


Дата: Авг 28, 2003 11:54:07

Quantum
А если вывести текст на контекст в памяти, а потом выводить его функцией BitBlt с последним параметром равным PATINVERT?


Дата: Авг 28, 2003 15:10:19

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


Дата: Авг 28, 2003 20:05:41

pas
Попробуйте, хотя TextOut довольно шустро работает (AFAIK) и особого выигрыша заметно не будет.

Asterix
Если у тебя уже есть более-менее рабочий вариант сего дела, намыль его мне на cpp_master#ukr.net


Дата: Авг 28, 2003 20:42:36

Quantum

Если б у меня был рабочий вариант ;-)
Сейчас у меня есть только окно, на него загружен bitmap, убирается
оно по клику мышки на нём(WM_LBUTTONDOWN), на этом пока всё :-)
Разбираю старинные примеры анимации что у меня есть, но ни один толком
не подходит :(


Дата: Авг 28, 2003 21:47:48

Сейчас у меня есть только окно, на него загружен bitmap
Ладно, мыль как есть.


Дата: Авг 28, 2003 21:59:28

Отправил ;-)
А чем еще можно стирать текст кроме FillRect?


Дата: Авг 28, 2003 22:03:16

InvalidateRect
InvalidateRgn
и ждать WM_PAINT
... или просто рисовать поверх битмапа. Щаз гляну.


Дата: Авг 28, 2003 22:05:51

Asterix
BitBlt с последним параметром равным PATINVERT в первый раз прорисовывает текст, а во второй (если выводить этот же текст) убирает текст восстанавливая рисунок под ним.
Quantum
Я прав?


Дата: Авг 28, 2003 22:58:58 · Поправил: Quantum

pas
Я прав?
Интересный подход... я об этом не подумал.

Asterix
Я тут набросал черновой вариант. Если воплотить идею pas, мерцания вообще не будет!

[убрал...]


Дата: Авг 28, 2003 23:29:36 · Поправил: Asterix

Quantum

Ну кто ж исходник вот так на общее обозрение выкладывает ;-)
Уж лучше мылом :)
Я бы сказал, что текст не мерцает а дергается, это плохо :(
но все-таки он движется ! Спасибо!
Неплохо бы было чтоб текст выплывал из воображаемой границы и заплывал опять
за границу внизу..


Дата: Авг 29, 2003 03:17:11

Asterix
Я бы сказал, что текст не мерцает а дергается
У меня он плавно плыл... хотя я уже писал, что без offscreen буфера проблемы с мерцанием избежать трудно. Попробуй воплотить совет pas.

Неплохо бы было чтоб текст выплывал из воображаемой границы и заплывал опять
за границу внизу

Ну... это ж тривиально осуществить. В чём собственно проблема?

. 1 . 2 . 3 . 4 . >>


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.037