Форум: "WinAPI";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];
ВнизCreateDIBSection Найти похожие ветки
← →
alxx (2003-02-13 11:21) [0]Если не трудно, не могли бы вы мне дать минимальный пример использования этой функции? Например, создать 100х100х16bit, заполнить случайными точками и вывести на форму. А то я тону просто в тех примерах, которые есть у меня.
← →
MBo (2003-02-13 18:33) [1]заполни структуру TBitmapInfo, вызови функцию, полученный указатель - на блок памяти, который заполни нужными значениями.
SetDiBitsToDevice
StretchDiBits
← →
alxx (2003-02-14 10:25) [2]Спасибо!
Я попробовал так, и вроде бы работает:
type TRGBArray = Array[0..1000] of RGBQUAD;
PRGBArray = ^TRGBArray;
var lpbmi : PBITMAPINFO;
lpTargetBits : Pointer;
DDC : HDC;
Bitmap : HBITMAP;
BB : PRGBArray;
i:Integer;
dwTargetHeaderSize : DWORD;
begin
dwTargetHeaderSize := sizeof ( BITMAPINFO ) + ( 1024 * sizeof( RGBQUAD ) );
GetMem (lpbmi, dwTargetHeaderSize);
lpbmi^.bmiHeader.biSize := sizeof (BITMAPINFOHEADER);
lpbmi^.bmiHeader.biWidth := 32;
lpbmi^.bmiHeader.biHeight := 32;
lpbmi^.bmiHeader.biPlanes := 1;
lpbmi^.bmiHeader.biBitCount := 32;
lpbmi^.bmiHeader.biCompression := BI_RGB;
lpbmi^.bmiHeader.biSizeImage := 0;
lpbmi^.bmiHeader.biXPelsPerMeter := 0;
lpbmi^.bmiHeader.biYPelsPerMeter := 0;
lpbmi^.bmiHeader.biClrUsed := 0;
lpbmi^.bmiHeader.biClrImportant := 0;
DDC := GetDC (0);
Bitmap := CreateDIBSection (DDC, lpbmi^, DIB_RGB_COLORS, lpTargetBits, 0, 0 );
BB:=lpTargetBits;
For i:=0 to 1023 do BB^[i]:=RGBQuad(random(255));
SetDiBitsToDevice(DDC,0,0,32,32,0,0,0,32, lpTargetBits,lpbmi^, DIB_RGB_COLORS);
StretchDIBits(DDC,0,0,128,128,0,0,32,32, lpTargetBits, lpbmi^,DIB_RGB_COLORS,SRCCOPY);
← →
alxx (2003-02-14 10:46) [3]Как бы теперь GDI функциями на ней что-нибудь нарисовать?
← →
MBo (2003-02-14 12:41) [4]>Как бы теперь GDI функциями на ней что-нибудь нарисовать
????
Зачем тогда DibSection делал?
GDI функции рисуют на контексте устройства.
В куске памяти рисуй сам.
← →
alxx (2003-02-14 13:33) [5]Мне нужно и то и другое. Я так понял, что следует рисовать на DC, потом делать что-то вроде GetBits, рисовать на ней битово и делать SetBits. Правильно?
Похоже GetBitmapBits подойдет.
← →
MBo (2003-02-14 13:38) [6]GetDiBits/SetDiBits
Get/SetBitmapBits тоже подойдет, но они рассмтриваются как устаревшие функции
← →
alxx (2003-02-14 13:50) [7]Понятно.
А как же в MFC метод GetBitmapBits у CBitmap? Он устаревший или его просто переименовывать не хотят?
← →
MBo (2003-02-14 14:03) [8]Про устаревшие - написано в хелпе. Видимо, потому, что не позволяют кучу параметров задавать, а с другой стороны - писать меньше :)
← →
alxx (2003-02-14 14:10) [9]Спасибо за помощь.
← →
i-C3H7OH (2003-02-14 14:26) [10]а можно рисовать и средствами GDI
просто делаем SelectObject на MemDC и вперед. должно работать.
никаких (S)GetBitmapBits не надо (это чтоб достать массив пкселей DDB)
это же DIB-секции, а не DIB. пример - исходники FastLIB
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2003.04.14;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.009 c