Re: Медленный BitBlt
От: Andrew S Россия http://alchemy-lab.com
Дата: 23.08.02 22:38
Оценка:
Здравствуйте Гришин Сергей, Вы писали:

А как ты инициализируешь FBitInfo?
Надо, чтобы глубина цвета _в_точности_ совпадала с установками виндовс. Т.е. если 32 бита — то 32. Например, у меня с 32-на десктопе и с 32 в DIB'е дает примерно 60 ms. (1024x768) (при CreateCompatible Bitmap примерно 59 ms).
А вот 24 бита в DIBe — уже 500 ms.
Хотя, это, конечно, полный бред Уж 32 бита в 24 отконвертить
_столько_ времени точно не надо

Выводы?


ГС>Доброе время суток.


ГС>Необходимо захватить кусок экрана и взять с него биты, т.е.


ГС> ScreenDC := CreateDC('DISPLAY', nil, nil, nil);

ГС> MemDC := CreateCompatibleDC(ScreenDC);
ГС> Bitmap:= CreateDIBSection(ScreenDC,FBitInfo,DIB_RGB_COLORS, FBuffer,0,0);
ГС> SelectObject(memDC,Bitmap);
ГС> BitBlt(MemDC,0,0,1024,768,ScreenDC,0,0,SRCCOPY);

ГС>Так вот BitBlt в случае 1024х768х24 работает СЕКУНДУ !!!


ГС>Может кто подскажет, где собака зарыта.


ГС>P.S. GetDiBits работает также долго.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[17]: Медленный BitBlt
От: aliho  
Дата: 11.02.03 12:37
Оценка:
Здравствуйте, Alex Fedotov, Вы писали:

AF>Здравствуйте Гришин Сергей, Вы писали:


ГС>>Объясни тупому, почему GetDiBist из 1024х768х32 в 1024х768х32 выполняется 0.5 секунды, а 1024х768х32 в 1024х768х8 0.15 секунды ?


AF>А оно действительно так выполняется? Я могу придумать несколько правдоподобных объяснений, но сначала хотелось бы убедиться, что это действительно так. Кстати, GetDIBits делается с экрана в память или из памяти в память?



так я так и не понял ... как сделать чтобы выод на полный экран был быстрее. У меня когда на весь выводится все равно видно, подергивается. То что GetDIBits можно получить bitmap эт понятно ... а как ускорить вывод? ведь от этого смена экранов быстрее работать не станет
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.