Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "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
9-43984
Checist[root]
2002-11-14 11:09
2003.04.14
Нужен исходник


14-44416
ASM
2003-03-25 17:31
2003.04.14
Нужна помощь по ассемблеру.


4-44499
melifaro
2003-02-14 04:09
2003.04.14
Прозрачность окон в XP и 2k


14-44373
QUE
2003-03-24 19:09
2003.04.14
Как работать с Clipboard на API ???


7-44474
turonix
2003-02-16 22:13
2003.04.14
Управление кнопкой





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский