![]() |
|
Модераторы: feodorv, GremlinProg, xvr, Fixin |
![]()
|
|
| MoZy |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 4.6.2006 Репутация: 1 Всего: 0 |
Привет народ! прошу прощения, GDI.
Вобшем кто знает какие фунции, чтоб быстро-быстро работать с байтами битмапы? А то прозрачность на GDI своими ручками - тугая вещь получается. Есть ли альтернатива GDI? готов попрощаться с ней, если уж она не способна на СКОРОСТЬ. Хотя все же BitBlt со своими тугими масками типа INVERT или XOR ведь быстро работает. как так же быстро забазать? А то GetDIBits жрет слишком много. Если кто-то предложит какие-то другие библиотеки, то прошу сразу с рабочим примерчиком. Спасибо за внимание Это сообщение отредактировал(а) MoZy - 5.10.2006, 20:12 --------------------
Experimentia est optima rerum magistra |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Быстро-быстро с отдельными пикселами через GDI не получится. Но для обеспечения прозрачности и прочих эффектов имеются спец. функции: TransparentBlt, MaskBlt ... AlphaBlend ... Да и с помощью простого BitBlt много чего можно делать...
Если нужно что-то другое - работай не с BITMAP, а с DIB-section: будешь иметь все свойства битмапа (выбор в качестве подложки контекста и т.д.) + прямой доступ к пикселам, причем в любой момент. Вот тогда сможешь быстро-быстро. -------------------- ... |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 3 Всего: 44 |
Если я правильн опоняла, тебя может спости GDI+
-------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
GDI+ - это ровно то же самое GDI, только с красивыми бантиками. Чем оно быстрее-то?
Ну можно CImage использовать вместо голой Dib section, наверное, удобнее будет... Альтернатива - это Direct X, наверное... -------------------- ... |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 3 Всего: 44 |
В GDI+ изначально поддерживает концепцию прозрачности. Четвертый бит у них по назначению
Вообще, хорошо бы знать изначальную задачу -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Alexeis |
|
|||
![]() Амеба Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 7 Всего: 459 |
Возможно я ошибаюсь, но GDI+ ипользут функции DirectDraw для работы с изображением, так что скорость должна быть намного выше. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
| MoZy |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 4.6.2006 Репутация: 1 Всего: 0 |
Nastya, да, я "извращаюсь" с битмапами. Задача такая: у меня есть две текстурки и маска с полутонами. я одну рисую на другую через маску. Получаутся гладкие границы. Алгоритм есть, но проблема в скорости. От Get/SetPixel я давно отказался. GetDIBits'ом получаю биты и обрабатываю (я так понимаю это и есть DIB section). Хотелось бы что-то подобное, но шипче.
Читал я про Direct. Оказалось в 9-х версиях DirectDraw запихали в Direct3D. Но я вообще еще с директом не работал. Слышал что он очень быстро работает с памятью. Может есть у кого-нибудь пример имитации 2D? --------------------
Experimentia est optima rerum magistra |
|||
|
||||
| Earnest |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5962 Регистрация: 17.6.2005 Где: Рязань Репутация: 33 Всего: 183 |
Нет. DIB section - это когда ты имеешь прямой доступ к отображаемым битам, а не к копии. Т.е. меняшь значение бита, и от тут же меняется в изображении. С помощью операций BitBlt, MaskBlt, TransparentBlt можно делать очень многое. В одних возможностях BitBlt можно утонуть: эта тернарная операция позволяет строить практически любые (с точки зрения битовой арифметики) комбинации 3 растров: источника, приемника и кисти (маски). Те операции, которые имеют имена (SCRCOPY и т.д.) отнюдь не исчерпывают всех возможностей BitBlt: в MSDN описаны правила, по которым составляются коды операций, а всего их 256. Для полупрозрачности есть AlphaBlend... Так что прежде чем изобретать велосипед (самому работать с битами), убедись, что нет готовых операций. -------------------- ... |
|||
|
||||
| MoZy |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 193 Регистрация: 4.6.2006 Репутация: 1 Всего: 0 |
Найти бы в своем старье ее описание. Спасибо. Обязательно поюзаю MSDN, чтоб ему... А то уж чуть было на Direct не перешел... Тема закрыта. --------------------
Experimentia est optima rerum magistra |
|||
|
||||
![]()
|
| Правила форума "C/C++: Системное программирование и WinAPI" | |
|
|
На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы . Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |