Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Работа с очень большими БМП


Автор: Штабс 8.12.2004, 12:38
Хай! smile
Хочу занятся самообразованием
ну понятно и самореализацией


Так вот.

Стандартная реализация ЛЮБОЙ анимации
есть копирование Подложки (или создание своей...но это не интересно)
вывод на него графического объекта и вывод полученной сборки на экран....

ну а если фоновый БМП ОЧЕНЬ большой? (к примеру будем оперировать размерани с Full Screen Monitor)

сам вывод его будет тормозить...

пойдут полосы...будет видна перерисовка....ну или ощутима

не думаю что ScanLine спасет положение...хотябы потому что всеравно придется перебирать по высоте битмапа

кто нибудь сталкивался с этой проблемой?
методы решения?



Автор: cardinal 8.12.2004, 12:51
Цитата
Стандартная реализация ЛЮБОЙ анимации

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

Автор: p0s0l 17.12.2004, 23:25
Методы решения ?
Переходи на DirectDraw или Direct3D...
Повозишься денёк-другой, поразбираешься, но зато таких проблем не будет.

Как частичное решение проблемы - используй двойную буферизацию.
Если выводишь на TImage, то включай буферизацию (DoubleBuffered) у родителя TImage (например, форма).
Тогда можешь не рисовать в промежуточном невидимом битмапе, а сразу выводи в TImage, мерцания не должно быть...

Потом, зачем тебе ScanLin'ы ? Копирование битмапов уже реализовано до тебя.
VCL: Draw, StretchDraw, CopyRect.
GDI: BitBlt, StretchBlt, TransparentBlt...

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)