| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Delphi: Звук, графика и видео > Работа с очень большими БМП |
| Автор: Штабс 8.12.2004, 12:38 |
| Хай! Хочу занятся самообразованием ну понятно и самореализацией Так вот. Стандартная реализация ЛЮБОЙ анимации есть копирование Подложки (или создание своей...но это не интересно) вывод на него графического объекта и вывод полученной сборки на экран.... ну а если фоновый БМП ОЧЕНЬ большой? (к примеру будем оперировать размерани с 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... |