Работа с растрами через GDI API

Общие вопросы, не зависящие от языка реализации.

Модераторы: Duncon, Hawk, Romeo, Eugie

Ответить
TCoder
Сообщения: 9
Зарегистрирован: 16 июл 2007, 00:20
Контактная информация:

Драсте, возникла проблема. Задача - попиксельная обработка нескольких контекстов экрана. Функции SetPixel и GetPixel слишком медленно работают. Вопрос - есть ли возможность обратится к растру, как к памяти, чтоб повысить эффективность обработки.

HDC hMemDc;
HDC hdc;
HBITMAP hBit;

hdc=GetDC(hWnd); // Получаю DC
hMemDc=CreateCompatibleDC(hdc); // Cоздаю совместимый контекст
hbit=CreateCompatibleBitmap(hdc,100,100); // Получаю совместимый растр
SelectObject(hMemDc, hBit); // Цепляю растр к совместимому конт.

....

Вообщем, есть ли способы обратиться к растру, как к памяти.
Заранее благодарен. Новичок TCoder
Absurd
Сообщения: 1228
Зарегистрирован: 26 фев 2004, 13:24
Откуда: Pietari, Venäjä
Контактная информация:

2B OR NOT(2B) = FF
TCoder
Сообщения: 9
Зарегистрирован: 16 июл 2007, 00:20
Контактная информация:

Спасибо за помощь. Я нашел функцию попроще - GetBItmapBits и SetBitmapBits. Единственный недостаток - нужно много глобальной памяти.
Аватара пользователя
WinMain
Сообщения: 929
Зарегистрирован: 14 янв 2005, 10:30
Откуда: Москва
Контактная информация:

GetBItmapBits и SetBitmapBits зависят от настроек графической системы Windows, особенно в части использования количества цветов (TrueColor, HighColor). Соответственно, на твоём компьютере может всё нормально работать, а на другом нет. Либо нужно писать универсальный алгоритм для работы с этими функциями.
TCoder
Сообщения: 9
Зарегистрирован: 16 июл 2007, 00:20
Контактная информация:

Универсальность я учел, спасибо. Очередной вопрос по этой теме: Можно ди удалять растр, после того, как я его прицепил к контексту (SelectObject)
Ответить