Текущий архив: 2014.08.31;
Скачать: CL | DM;
Вниз
как освободить память после вызова функции? Найти похожие ветки
← →
Вася (2013-10-04 14:57) [0]после каждого вызова функции отхватывается кусок памяти
сама функция:function set_brignes(aBitMap: TBitmap; k:integer):TBitmap; //установка яркости
var
Count, v:integer;
pix3in: ^TRGBtriple;
pix4in: ^TRGBQuad;
pix_p:Pointer;
begin
result:=Tbitmap.Create;
result.Assign(aBitMap);
Count:=aBitmap.Height*aBitmap.Width;
result.BeginUpdate(false);
if aBitMap.pixelformat=pf32bit then
begin
pix_p:=result.RawImage.data;
pix4in:=pix_p;
repeat
v:=pix4in^.rgbBlue+k;
if v<0 then v:=0;
if v>255 then v:=255;
pix4in^.rgbBlue:=v;
pix4in^.rgbGreen:=v;
pix4in^.rgbRed:=v;
inc(pix4in);
dec(count);
until count<=0;
end;
if aBitMap.pixelformat=pf24bit then
begin
pix_p:=result.RawImage.data;
pix3in:=pix_p;
repeat
v:=pix3in^.rgbtBlue+k;
if v<0 then v:=0;
if v>255 then v:=255;
pix3in^.rgbtBlue:=v;
pix3in^.rgbtGreen:=v;
pix3in^.rgbtRed:=v;
inc(pix3in);
dec(count);
until count<=0;
end;
result.EndUpdate(false);
pix3in:=nil;
pix4in:=nil;
pix_p:=nil;
end;
вызов ее:image1.Picture.Bitmap.Assign(set_brignes(WorkBMP, TrackBar1.Position));
P.S. FPC 2.6
← →
Sapersky (2013-10-04 15:27) [1]Выделять не нужно.
Сделай set_brignes(Src, Dst: TBitmap; k:integer), в Dst передавай image1.Picture.Bitmap.
Вообще, посмотрел бы ты FastLIB что ли, или ещё какую-нибудь библиотеку (Graphics32? хотя она сложновата изнутри, на мой вкус). Если уж не в смысле использовать, то хотя бы в качестве образца, как надо делать. Да и всякая яркость-контраст и проч. велосипеды там давно уже изобретены.
← →
Вася (2013-10-04 15:44) [2]
> Выделять не нужно.
Тоесть получается приimage1.Picture.Bitmap.Assign(set_brignes(WorkBMP, TrackBar1.Position));
данные не копируются, а просто указатель меняется?
Извините если вопросы идиотские, учусь :)
← →
Dimka Maslov © (2013-10-04 15:46) [3]
> result:=Tbitmap.Create;
Если создаёшь объект внутри функции, где ты его уничтожаешь?
← →
Вася (2013-10-04 15:52) [4]да, действительно, каждый раз новый битмап создается, спасибо, понял
Страницы: 1 вся ветка
Текущий архив: 2014.08.31;
Скачать: CL | DM;
Память: 0.47 MB
Время: 0.005 c