FedeX писал(а):И для попиксельной обработки производительнее будет если использовать TLazIntfImage - в папке с лазарусом (Examples) есть пример как это использовать, там есть прямой доступ к памяти изображения. В Делфи был аналогично производительный способ доступа к памяти изображения через сканлайны битовой карты, но в Лазарусе отчего-то сделали иначе..
Попробовал, работа с пикселями вроде не тормозная, но вот что бы результат вывести на канаву сначала надо сформировать битмап
TempIntfImg.CreateBitmaps(ImgHandle,ImgMaskHandle,true);
, что происходит достаточно долго.
В общем я нашел более простой альтернативный способ прямого доступа к пикселям битмапа - API функция CreateDIBSection (win32, wince). В аттаче находится пример, демонстрирующий производительность (белый шум) на Delphi (у меня 6-ка стоит). Но я не могу перенести его на лазарус, он не узнает структуру tagBITMAPINFO, которая должна находится в модуле Windows. Господа специалисты, помогите добавить эту структуру
var
BInfo: tagBITMAPINFO; Error: Identifier not found "tagBITMAPINFO"
begin
// Создание DIB
BInfo.bmiHeader.biSize := sizeof(tagBITMAPINFOHEADER);
BInfo.bmiHeader.biWidth := SX;
BInfo.bmiHeader.biHeight := -SY;
BInfo.bmiHeader.biPlanes := 1;
BInfo.bmiHeader.biBitCount := 32;
BInfo.bmiHeader.biCompression := BI_RGB;
ScrBitmap := TBitmap.Create();
ScrBitmap.Handle := CreateDIBSection(ScrBitmap.Canvas.Handle, BInfo, DIB_RGB_COLORS, Scr, 0, 0);
У вас нет необходимых прав для просмотра вложений в этом сообщении.