ReadPixel , PixMaps, Снимок экрана
Несколько тупых вопросов по блитзмаксу... В общем, как обычнО, что-то делаю... делаю, и вот наткнулся на несколько проблем... Как узнать цвет пикселя на экране? Вроде ReadPixel,а вроде и нет... Для чего нужна Pixmaps? Как сделать снимой экрана? И, допустим, как преобразовать получившийся снимок в картинку? Вот.. как я понял, это все взаимосвязано.. но что и как - хз. Сам не смог разобратся... Вроде надо организовать pixmap, и с помощью него и будет работать read pixel и можно будет делать снимок... а вообще как это все в коде реализовать... хы... И вот еще вопрос. Если делать полноэкранный снимок экрана, преобразовывать его в картинку и сразу же выводить под определенным setblend'ом в реальном времени, это все жутко тормозить будет? непостижима моей логики эта система.. ( сорри, конечно, но сам не смог... :''(( |
Re: ReadPixel , PixMaps, Снимок экрана
Кстати мне тоже очень интересны эти проблемы)
Так что пожалуста дайт кто-нибудь ответ, и вы поможете человечеству! =) Заранее благодарен! |
Re: ReadPixel , PixMaps, Снимок экрана
TPixmap ето просто масив пикселей :)
TImage ето картинка, то есть масив pixmapов я думаю абстракция понятна ? TImage просто позволяет грузить анимационые картинки где каждый кадр ето отдельный pixmap в принципе грабим всю картинку в pixmap там делаем readpixel получает INT далее побитовым смещением выуживаем нужный нам байт в INTе 4 байта, тоесть 32 бит сумарно обычно формат INTа в пиксмапе ARGB, но может быть и другой что указано в справке как доставать цвета - покапайтесь на форуме тут уже был код к примеру вот как делается скриншот в бмаксе Local img:TPixmap = GrabPixmap(0,0,GraphicsWidth(),GraphicsHeight()) SavePixmapPNG(img,filename) в общем хз о тормозности функции я нигде не использую ее :) возьмите высокоточный таймер моего производства :-) и просто померяйте скока времени жрет етот grappixmap :) теоретически довольно мало должен есть |
Re: ReadPixel , PixMaps, Снимок экрана
хотелось бы добавить, что еще есть Function GrabImage( image:TImage,x,y,frame=0 )
Description: Grab an image from the back buffer. |
Re: ReadPixel , PixMaps, Снимок экрана
Цитата:
..::Добавил::.. Попробовал функцией Жимона.. вот... 32 мс тратит GrapPixmap. Если с сохраненим - около 300 мс. гы, а если выводить просто пихмапу - 30 мс. около 35 фпс. И аля тот же эффект. Вывод - жимон прав). И функцию grabimage лучше не использовать, ибо тормазнутая. |
Re: ReadPixel , PixMaps, Снимок экрана
Данил
свечение к картинкам лутче сразу в фотошопе добавить ибо пост еффекты нужно сводить к минимуму |
Re: ReadPixel , PixMaps, Снимок экрана
Если нужен постэффект типа блюра или размытия картинки, он делается на основе работы с CLS:
0 - CLS 1 - рисуем сцену (с прозрачностью в .5) 2 - рисуем сцену со смещением и прозрачность .5 3 - флип, переход на 0 Пунктов 1,2 может быть разное количество, в зависимосте от него подбираешь альфу. Так будет рисоваться быстрее - не будет тормозной операции GrabImage хинт 2: вместо CLS можно использовать отрисовку моноцветной картинки с нужным цветом - ускорение. хинт 3: для экономии памяти куртинку для затычки CLS можно сделать из одного пикселя и скалить ее под размер окна, а не делать целый пиксмап под его размер. Убыстрить снимок с экрана можно только очень сложным способом (теоретически) - написать в асме оптимизированный код. Для грабинга используется стандартный функционал ДХ, т.е. - это не косяк БМ, а тормоза ДХ. Можно немного оптимизировать работу ДХ, вызвав вместо BitBlt FastBlt в самой процедуре GrabPixmap. (параметры поменять не забудь). -- гы надо-же раздел по БМ открыли а я токо заметил ничо что я так поздо - думаю поможет все-же |
Часовой пояс GMT +4, время: 17:04. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot