Форум: "WinAPI";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Внизпрямой доступ к памяти device context а... Найти похожие ветки
← →
wicked © (2004-07-22 11:56) [0]сори, если сумбурно звучит тема...
необходимо поиметь указатель на область памяти, используемой GDI для отображения всего того, что рисуется в определенном device context"е....
пока дошел до такого варианта (псевдокод):
dc = GetDC(<handle окна>);
mem_dc = CreateCompatibleDC();
mem_bm = CreateCompatibleBitmap(); // создаем битмап в памяти
old_bm = SelectObject(mem_dc, mem_bm);
BitBlt(mem_dc, <coords...>, dc, <coords...>); // теперь изображение dc находится в mem_bm
SelectObject(mem_dc, old_bm);
LPBITMAPINFO lpbm = alloc();
GetDIBits(dc, mem_bm, <coords>, NULL {указатель на биты изображения}, lpbm); // получаем параметры битмапа
bit_size = <подсчет кол-ва байтов для битов изображения>;
bits = alloc(bit_size);
// получаем копию битмапа в наш блок памяти
GetDIBits(dc, mem_bm, <coords>, bits, lpbm);
// тут рисуем в bits всё, что угодно
// возвращаем изображение в блоке памяти назад в битмап
SetDIBits(dc, mem_bm, <coords>, bits, lpbm);
// копируем битмап на активный dc окна
old_bm = SelectObject(mem_dc, mem_bm);
BitBlt(dc, <coords...>, mem_dc, <coords...>);
SelectObject(mem_dc, old_bm);
// подметаем за собой
как видно из примера, делается аж две копии изображения оконного device context"а, чего хотелось бы избежать...
какие будут соображения?...
наперед спасибо...
← →
wicked © (2004-07-22 19:41) [1]подниму ветку - вдруг кто-то делал такое.....
← →
wicked © (2004-07-23 11:37) [2]последний раз подниму ветку... а вдруг?...
← →
wicked © (2004-07-23 18:37) [3]а вот, что требовалось - http://www.rsdn.ru/?Forum/Message/81784.htm
может кому надо будет...
ЗЫ монолог такой нехилый вышел.... :)
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2004.09.05;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.041 c