Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.06.14;
Скачать: CL | DM;

Вниз

Где искать буфер TBitmap   Найти похожие ветки 

 
imm   (2005-05-31 10:41) [0]

Люди добрые помогите, где мне отыскать адрес буфера (ну где хрянятся все пиксели в виде dw), мне просто нужен быстрый доступ к этим самым пикселям и я хочу писать алгоритм обработки на asm, но я не знаю как и где этот буфер храниться... Помогите... Зараннее спасибо.


 
Alx2 ©   (2005-05-31 10:43) [1]

У TBitMap в св-ве ScanLine


 
WondeRu ©   (2005-05-31 10:46) [2]

GetDIBits


 
Immortal ©   (2005-05-31 10:48) [3]

А он там в виде обычного двумерного массива разложенного в одну строку ???


 
TUser ©   (2005-05-31 10:56) [4]

> Immortal ©   (31.05.05 10:48) [3]

Ну, если на то пошло, то любой двухмерный массив расположен в одну строку. В данном же случае, TBitMap хранит ссылку hBitMap на объект создаваемый и обслуживаемый операционной системой. Судя по тому, что написали программисты Борланда система действительно хранит двухмерный массив точек
   Integer(Result) := Integer(bmBits) +
     Row * BytesPerScanline(biWidth, biBitCount, 32);

Да и как иначе-то собственно?


 
WondeRu ©   (2005-05-31 10:56) [5]

Immortal ©   (31.05.05 10:48) [3]
да... читай Help


 
Immortal ©   (2005-05-31 12:02) [6]

Извените за назойливость, но ScanLine работает только если BitMap перед вызовом загружен из файла (чего мне не надо), а GetDIBits это нечто злое (с Win API дружу пока плохо), я бы был благодарен, если бы мне дали примерчик всё таки с GetDIBits или хотя бы с GetDIB, а у меня что-то не получается...


 
Immortal ©   (2005-05-31 12:03) [7]

Извените за назойливость, но ScanLine работает только если BitMap перед вызовом загружен из файла (чего мне не надо), а GetDIBits это нечто злое (с Win API дружу пока плохо), я бы был благодарен, если бы мне дали примерчик всё таки с GetDIBits или хотя бы с GetDIB, а у меня что-то не получается...


 
WondeRu ©   (2005-05-31 12:24) [8]

параметры функций смотри в хелпе

var
 Data              : array[0..n] of Byte;
 
 BMP         : TBitmap;

 BMInfo            : TBitmapInfo;
 Size              : DWORD;

FillChar (BMInfo, SizeOf(BMInfo), 0); //обнуляем
BMinfo.bmiHeader.biSize := sizeof(TBitmapInfoHeader); //высталяем размер
GetDIBits (LittleBMP.Canvas.Handle, LittleBMP.Handle, 0, LittleBMP.Height, nil, BMInfo, DIB_RGB_COLORS);//получаем BMInfo

//записываем в массив Data
GetDIBits(BMP.Canvas.Handle,
         BMP.Handle,
         0,
         BMP.Height,
         @Data[0],
         BMInfo,
         DIB_RGB_COLORS);


 
WondeRu ©   (2005-05-31 12:27) [9]

WondeRu ©   (31.05.05 12:24) [8]
LittleBMP == BMP (просто не стер Little;) )



Страницы: 1 вся ветка

Текущий архив: 2005.06.14;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.027 c
14-1117043795
Almaz
2005-05-25 21:56
2005.06.14
Оскорбления вместо помощи - где наше взаимоуважение ?


8-1108485618
_PG_
2005-02-15 19:40
2005.06.14
*.avi нужно сделать не доступным


14-1116532347
Yanis
2005-05-19 23:52
2005.06.14
Если бы программисты строили дома.


3-1115201907
InVariantian
2005-05-04 14:18
2005.06.14
Data Module


14-1116935766
Alexander Panov
2005-05-24 15:56
2005.06.14
хм... теперь будем платить за пересечение границы?