Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Взять битмап формы...

Аноним
Всем c:\>( привет
Проблема такая: нужно получить текущий битмап, связанный с формой. Еще предпочтительнее получить только битовый массив окна в чистом виде(те даже не HBITMAP, а битовую последовательность).Далее
нужно будет по биткарте пройтись циклом.Дублировать содержимое крайне нежелательно.Сразу оговорюсь, что предложения
ходить по битмапу через КАНВА->ПИКСЕЛ(x,y) не пройдет - слишком тормозно , по эксперименту знаю что просто сравнение байтов по XOR пашет много быстрее.
Вот...Те задача-имею старый битмап, надо сравнить с текущим, и как можно шустрее.
Заранее благодарный Dimas.
409
12 ноября 2001 года
Ramzes
163 / / 20.09.2000
Берешь и делаешь вот так:
(Допустим имя формы frm)
{
...
HDC hdc,hmemdc;
HBITMAP hb;
BITMAP frm_bitmap;
int w=frm->Width;
int w=frm->Height;

hdc=GetDC(frm->Handle);
hmemdc=CreateCompatibleDC(hdc);
hb = CreateCompatibleBitmap(hmemdc,w,h);
SelectObject(hmemdc,hb);
BitBlt(hmemdc,0,0,w,h,hdc,w,h,SRCCOPY);
GetObject(hb,sizeof(BITMAP),frm_bitmap);
//************************************//

Теперь у тебя есть структурка frm_bitmap,
которая описывается так:
typedef struct tagBITMAP { // bm
LONG bmType;
LONG bmWidth;
LONG bmHeight;
LONG bmWidthBytes;
WORD bmPlanes;
WORD bmBitsPixel;
LPVOID bmBits; // <- это указатель на
// растр (но он может быть записан по
//разному - это уже сам разберешь
} BITMAP;

Писал по памяти так что некоторые подробности не помню, надеюсь сам исправишь если что не так
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог