Вниз
Скачать: CL | DM;

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 вся ветка

Скачать: CL | DM;



Память: 0.47 MB
Время: 0.011 c
14-44388
hatchy
2003-03-21 14:23
2003.04.14
Создать файл с картинками......


14-44331
GDBoy
2003-03-30 21:36
2003.04.14
Вирусы...


7-44465
Mehal'
2003-02-18 15:45
2003.04.14
Как напечатать содержимое WebBrowser ???


14-44398
nk
2003-03-28 14:33
2003.04.14
Выбор


9-43985
12345678_
2002-11-15 09:29
2003.04.14
DirectPlay




   Наверх