Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Альтернатива GetDIBits, альтернатива GUI? 
V
    Опции темы
MoZy
  Дата 5.10.2006, 18:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 4.6.2006

Репутация: 1
Всего: 0



Привет народ! прошу прощения, GDI.
Вобшем кто знает какие фунции, чтоб быстро-быстро работать с байтами битмапы? А то прозрачность на GDI своими ручками - тугая вещь получается. Есть ли альтернатива GDI? готов попрощаться с ней, если уж она не способна на СКОРОСТЬ. Хотя все же BitBlt со своими тугими масками типа INVERT или XOR ведь быстро работает. как так же быстро забазать? А то GetDIBits жрет слишком много.
Если кто-то предложит какие-то другие библиотеки, то прошу сразу с рабочим примерчиком.
Спасибо за внимание  smile 

Это сообщение отредактировал(а) MoZy - 5.10.2006, 20:12
--------------------
Experimentia est optima rerum magistra
PM MAIL WWW ICQ   Вверх
Earnest
Дата 6.10.2006, 07:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Быстро-быстро с отдельными пикселами через GDI не получится. Но для обеспечения прозрачности  и прочих эффектов имеются спец. функции: TransparentBlt, MaskBlt ... AlphaBlend ... Да и с помощью простого BitBlt много чего можно делать... 
Если нужно что-то другое - работай не с BITMAP, а с DIB-section: будешь иметь все свойства битмапа (выбор в качестве подложки контекста и т.д.) + прямой доступ к пикселам, причем в любой момент. Вот тогда сможешь быстро-быстро.



--------------------
...
PM   Вверх
Nastya
Дата 6.10.2006, 14:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 3
Всего: 44



Если я правильн опоняла, тебя может спости GDI+ smile


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
Earnest
Дата 6.10.2006, 15:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



GDI+ - это ровно то же самое GDI, только с красивыми бантиками. Чем оно быстрее-то?
Ну можно CImage использовать вместо голой Dib section, наверное, удобнее будет...
Альтернатива - это Direct X, наверное...


--------------------
...
PM   Вверх
Nastya
Дата 6.10.2006, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Комодератор
Сообщений: 1287
Регистрация: 27.3.2002
Где: Мариуполь

Репутация: 3
Всего: 44



В GDI+ изначально поддерживает концепцию прозрачности. Четвертый бит у них по назначению smile Я так поняла что человек извращается с битами для, что бы что-то прозрачное нарисовать? Или нет?
Вообще, хорошо бы знать изначальную задачу


--------------------
Что бы понять рекурсию, надо понять рекурсию

"Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор
PM MAIL   Вверх
Alexeis
Дата 6.10.2006, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: 7
Всего: 459



Цитата(Earnest @  6.10.2006,  15:22 Найти цитируемый пост)
Альтернатива - это Direct X, наверное... 

Возможно я ошибаюсь, но GDI+ ипользут функции DirectDraw для работы с изображением, так что скорость должна быть намного выше.


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
MoZy
Дата 6.10.2006, 18:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 4.6.2006

Репутация: 1
Всего: 0



Nastya, да, я "извращаюсь" с битмапами. Задача такая: у меня есть две текстурки и маска с полутонами. я одну рисую на другую через маску. Получаутся гладкие границы. Алгоритм есть, но проблема в скорости. От Get/SetPixel я давно отказался. GetDIBits'ом получаю биты и обрабатываю (я так понимаю это и есть DIB section). Хотелось бы что-то подобное, но шипче.
Читал я про Direct. Оказалось в 9-х версиях DirectDraw запихали в Direct3D. Но я вообще еще с директом не работал. Слышал что он очень быстро работает с памятью.
Может есть у кого-нибудь пример имитации 2D?  smile 
--------------------
Experimentia est optima rerum magistra
PM MAIL WWW ICQ   Вверх
Earnest
Дата 9.10.2006, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5962
Регистрация: 17.6.2005
Где: Рязань

Репутация: 33
Всего: 183



Цитата(MoZy @  6.10.2006,  19:28 Найти цитируемый пост)
GetDIBits'ом получаю биты и обрабатываю (я так понимаю это и есть DIB section). 

Нет. DIB section - это когда ты имеешь прямой доступ к отображаемым битам, а не к копии. Т.е. меняшь значение бита, и от тут же меняется в изображении.

Цитата(MoZy @  6.10.2006,  19:28 Найти цитируемый пост)
у меня есть две текстурки и маска с полутонами

С помощью операций BitBlt, MaskBlt, TransparentBlt можно делать очень многое. В одних возможностях BitBlt можно утонуть: эта тернарная операция позволяет строить практически любые (с точки зрения битовой арифметики) комбинации 3 растров: источника, приемника и кисти (маски). Те операции, которые имеют имена (SCRCOPY и т.д.) отнюдь не исчерпывают всех возможностей BitBlt: в MSDN описаны правила, по которым составляются коды операций, а всего их 256. 
Для полупрозрачности есть AlphaBlend...
Так что прежде чем изобретать велосипед (самому работать с битами), убедись, что нет готовых операций.




--------------------
...
PM   Вверх
MoZy
Дата 11.10.2006, 21:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 193
Регистрация: 4.6.2006

Репутация: 1
Всего: 0



Цитата

Для полупрозрачности есть AlphaBlend...
 
Найти бы в своем старье ее описание.
Спасибо. Обязательно поюзаю MSDN, чтоб ему... А то уж чуть было на Direct не перешел...

Тема закрыта.
--------------------
Experimentia est optima rerum magistra
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0508 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.