![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
Есть объект класса CDC, созданный при помощи CreateCompatibleDC, там какой-то рисунок. Задача в цикле перебрать все точки и сравнить их цвет с заданным. Все это работает жудко медленно. Как мне кажется дело в GepPixel, похоже время уходит на приобразования цвета из "понятного" контексту устройства в DIB. Но мне это не требуется и время на это тратить не хочется. Так мой CDC "валяется " в памяти, должен быть способ сделать все гараздо быстрее. КАК?
-------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
GetDIBits
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
GetDiBits работает с битмапом, а у меня объект CDC .
Я с этимим битмапами и контекстами совсем запарилась. Решила сделать CreateDIBSection. Во-первы он возвращает битмап и можно будет воспользоваться GetDiBits. Во ворых ему там передается void* по которуму он должен положить масив с инфой про эти самые цвета точек. Толи я чего не так делаю, толи ... Но массив этот у меня весь из нулей и битмап не NULL, но какой-то пустой Может кто приведет примерчик -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
взять и найти бекбуффер
и читать из него -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
Неопнял -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
Спасибо, но пока не помогло Кроме того пример загрузился не до конца -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| Baa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2639 Регистрация: 12.4.2002 Где: Москва Репутация: 8 Всего: 12 |
хм.. там же созадается задний буфер, в нем рисует... проблема была с создании?
-------------------- "Duty is everything; the greatest of joys, the deepest of sorrows" Aribeth de Tylmarande |
|||
|
||||
| Nastya |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 1287 Регистрация: 27.3.2002 Где: Мариуполь Репутация: 5 Всего: 44 |
Я тоже создаю задний буффер и внем рисую, созадтье его не проблема и посмотреть, что нарисовано тоже не проблема через GetPixel проблема сделать это быстро.
А для того что бы сделать быстро нужно обращатся на "прямую" ,а не через GetPixel, который кроме всего прочего еще и преобразует цвет из контекста к стандартному фармату. -------------------- Что бы понять рекурсию, надо понять рекурсию "Профессионал - это человек сделавший все возможные ошибки в очень узкой области". Н.Бор |
|||
|
||||
| oleg1973 |
|
|||
![]() asm fanat ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3283 Регистрация: 16.7.2003 Где: Italy Репутация: 1 Всего: 34 |
ну на асме это выглядит так
comcall DDSBack,LockSurface,NULL,ddsd,DDLOCK_WAIT, NULL mov edi,[ddsd.lpSurface] тоесть перед рисованием в бэкбуфер его нада залочить и с этим никто не спорит верно? после этого просто читаем из "обьекта" (ох уж эти обьектнишики и в результате получаем в EDI "указатель" на наш бэкбуфер и можем читать сколько душе угодно mov eax,[edi] ну а потом comcall DDSBack,UnlockSurface,0 и все -------------------- SST 465555 icq 200-512-712 |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |