· Начало · Отвђтить · Статистика · Поиск · FAQ · Правила · Установки · Язык · Выход · WASM.RU · Noir.Ru ·

 WASM Phorum —› WASM.WIN32 —› Анимация текста

<< . 1 . 2 . 3 . 4 . >>

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


Дата: Авг 29, 2003 23:29:25

Quantum

Лазию по твоему примеру и никак не врублюсь почему у меня bitmap под текстом
в момент прохождения текста искажается(сдвигается), это издержки
метода?


Дата: Авг 30, 2003 21:26:47

Есть такая процедура вывода bitmap'а в окно программы,
что-то я торможу, как то же самое но только для текста
сделать?

;#####################################################
invoke GetDC,hWin
 mov hDC, eax

invoke CreateCompatibleDC,hDC
 mov memDC, eax

invoke SelectObject,memDC,hBmp
 mov hOld, eax

invoke BitBlt,hDC,10,10,166,68,memDC,0,0,SRCCOPY

invoke SelectObject,hDC,hOld
invoke DeleteDC,memDC

invoke ReleaseDC,hWin,hDC

;#####################################################


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

Asterix
Нужно создать пустой битмап (желательно чёрнобелый) в памяти (memDC) подходящего размерат (шоб текст уместился). Размер прямоугольной области под текст можно установить через GetTextExtentPoint32. Далее рисуем текст через TextOut и копируем всё это дело из memDC в hDC.

ЗЫ: битмап с текстом можно создать в самом начале программы и потом копировать по WM_PAINT.
ЗЫЫ: Мерцание происходит не из-за отрисовки текста, а из-за отрисовки фона под текстом.


Дата: Авг 31, 2003 01:01:25

Quantum

А если текст в несколько строчек, то каждую строчку нужно отдельно обрабатывать
и выводить на окно TextOut и BitBlt для каждой строчки?


Дата: Авг 31, 2003 01:07:42 · Поправил: Quantum

Вовсе нет. Сейчас я поэкспериментирую с DrawText и напишу.
. . .
Поэкспериментировал!
. . .
Аттач сглючил :(


Дата: Авг 31, 2003 02:43:53

Quantum

Получилось?


Дата: Авг 31, 2003 02:51:06

О! Пока, прада, без мультилайн. Надо поменять TextOut на DrawText.

546453262__about.rar


Дата: Авг 31, 2003 03:23:16

Забрал, и уже глянул теперь bitmap не искажается, но текст у меня едет
маленькими шажками, блин может у меня с развёрткой чего в мониторе,
неужели пиксель такой большой что на глаз заметен шаг текста?


Дата: Авг 31, 2003 03:55:39

Вот смотрю я у себя в thebat'е текст также дёргается(там тоже есть
движущийся текст), но смотрю затем в Macromedia Dreamweaver и там всё
нормально, вот ведь интересно.
А нельзя текст двигать на 0.5 пикселя :-)?


Дата: Авг 31, 2003 05:10:16

Очередная бета :)

но смотрю затем в Macromedia Dreamweaver и там всё
нормально, вот ведь интересно.

Мож DirectX?

_474274055__about.rar


Дата: Авг 31, 2003 05:32:14

Мож DirectX?

Не похоже, текст очень чёткий.

Очередная бета :)

Мда, шажки текста увеличились вдвое :(


Дата: Авг 31, 2003 05:52:07

Quantum

Слушай, а у тебя за один цикл происходит восстановление
фона и отрисовка текста, не получается случайно так что
текст двигается в итоге на два пикселя? Я честно сказать
уже в коде потерялся, зачем делать add y_offset,3 -тут и
единицы-то многовато было ;-)


Дата: Авг 31, 2003 06:07:37

Asterix
зачем делать add y_offset,3 -тут и
единицы-то многовато было ;-)

Да, раньше было inc y_offset. Чем больше шаг, тем меньше мерцаний. Вся проблема, IMHO, в использовании двух BitBlt. Надо будет попробовать стирать + перерисовывать текст за один BitBlt...

All
Кстати, кто знает как ускорить BitBlt? Или может есть ф-ция побыстрее BitBlt?


Дата: Авг 31, 2003 06:26:39

Написание такой простенькой "аннимации" оказалось весьма нетривиальной задачей. Предлагаю совместно подоптимизировать этот about, т.е. сгладить мерцание и т.д. и положить в раздел "исходники", если администраторы согласятся.


Дата: Авг 31, 2003 11:19:53

Давай, тем более что исходник уже здесь лежит ;-)

<< . 1 . 2 . 3 . 4 . >>


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