· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.WIN32 —› Функция GetDIBits

Посл.отвђт Сообщенiе


Дата: Ноя 24, 2003 13:12:20

Подскажите как правильно обращаться с GetDIBits.
Делаю так:
invoke	CreateBitmap, 1024, 1024, 1, 24, NULL
mov	hBitmap, EAX
	
invoke	CreateCompatibleDC, NULL
mov	dc, EAX

mov	bi.bmiHeader.biSize, sizeof(BITMAPINFOHEADER)
	
invoke	GetDIBits, dc, hBitmap, 0, 1024, 0, addr bi, DIB_RGB_COLORS 	
.if EAX == 0
	return	-1
.endif

и получаю ошибку.

А если создаю 16-битный битмап,
invoke	CreateBitmap, 1024, 1024, 1, 16, NULL

то проходит нормально.
В чем загвоздка? Как сделать, чтобы работала в обоих случаях?


Дата: Ноя 24, 2003 13:45:26

Zoda
bitmap нужно выбрать в контексте устройства.
Чтобы заполнить структуру высота тоже должна быть нулевой.
Потом уже можно получать сами данные, передав заполненную структуру, и указатель на массив пикселей.


Дата: Ноя 24, 2003 15:03:51

Zoda
Посмотри исходник PaintView, процедуру BitmapToFile.
Там при первом вызове получаем размер растра, а при втором
битовы массив.


Дата: Ноя 24, 2003 18:53:03

Можно посмотреть на код здесь: http://www.codexxi.com/MyBlocks.html


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.069