![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Странное ограничение.... [D7, WinXP]
Ricks © (2007-08-17 15:03:00)Только что нашел.
Вот это не работает, если размер картинки (WxHx4) больше 1МБ
var under : PRGBAData;
fDC : HDC;
uBM : HBITMAP;
oBM : HBITMAP;
w, h : integer;
begin
w:=header.bmiHeader.biWidth;
h:=header.bmiHeader.biHeight;
fDC:=CreateCompatibleDC(aDC);
uBM:=CreateBitmap( w, h, 1, 32, nil );
oBM:=SelectObject(fDC, uBM);
BitBlt( fDC, 0, 0, w, h, aDC, x0, y0, SRCCOPY );
*******************************************
under:=SysGetMem(w * h * sizeof(RGBA));
GetDIBits( fDC, uBM, 0, h, under, header, DIB_RGB_COLORS );
imBlendData( under, bits, w * h );
SetDIBitsToDevice(aDC, x0, y0, w, h, 0, 0, 0, h, bits, header, DIB_RGB_COLORS);
**********************************************
SysFreeMem(under);
SelectObject(fDC, oBM);
DeleteObject(uBM);
DeleteDC(fDC);
Память вроде бы выделяет, imBlendData выполняется нормально, а вот SetDIBitsToDevice не работает
Ricks (2007-08-17 15:04:00) [1]Вернее так работает, а вот
SetDIBitsToDevice(aDC, x0, y0, w, h, 0, 0, 0, h, under, header, DIB_RGB_COLORS);
Нет!