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

Работа с TBitMap   Найти похожие ветки 

 
karambos   (2012-06-19 21:50) [0]

Подскажите пожалуйста, запутался немного с указателями.
Если мне нужно передать битмап в процедуру, в которой будет происходить отрисовка, как правильно объявить процедуру

procedure drawBMP(b: TBitmap)  
или  объявить PTBitmap = ^TBitmap и
procedure drawBMP(b: PTBitmap)  

И второй вопрос в принице обратный - как правильно объявить функцию, которая возвращает битмап

 function getBMP: TBitmap;
 begin
    if  then result:= bmp1 else result:= bmp1;
 end;

var
 b: TBitmap;
...
 b:= getBMP;
 b.canvas.draw...

или

 function getBMP: PTBitmap;
 begin
    if  then result:= @bmp1 else result:= @bmp1;
 end;

var
 b: PTBitmap;
...
 b:= getBMP;
 b^.canvas.draw...

Вот не помню что-то где то читал про утечки памяти и про какие-то скрытые  ..  уже не помню что..

если делаю как TBitMap то что-то b.canvas.handle что-то постоянно меняется.


 
Омлет ©   (2012-06-19 21:54) [1]

> как правильно объявить процедуру

Так:
procedure drawBMP(b: TBitmap)

Переменная типа TBitmap - это уже указатель.


 
Омлет ©   (2012-06-19 21:56) [2]


> как правильно объявить функцию, которая возвращает битмап

function GetBmp: TBitmap;
begin
 Result := TBitmap.Create;
end;

var
 b: TBitmap;

b := GetBmp;
try
 ...
finally
 b.Free;
end;


 
karambos   (2012-06-19 22:03) [3]

Спасибо огромное!


 
karambos   (2012-06-19 22:06) [4]

Если я создал битмап, хендл канваса что я бы не делал (менял размеры, очищал, рисовал... ) будет всегда тот же?
BMP.canvas.Handle ?


 
Омлет ©   (2012-06-19 22:15) [5]

> Если я создал битмап, хендл канваса что я бы не делал (менял
> размеры, очищал, рисовал... ) будет всегда тот же?


Нет, может поменяться.


 
karambos   (2012-06-19 22:22) [6]

Омлет ©, огромное Вам спасибо!
А то я уже весь код потока перерыл из-за того, что заметил хэндл разный..
Отсюда и мысли пошли не в ту сторону ;)



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

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



Память: 0.46 MB
Время: 0.051 c
2-1344328033
Pcrepair
2012-08-07 12:27
2013.03.22
Чем лучше заменить TidHTTP Indy 10?


2-1329813740
Vasili Lubavin
2012-02-21 12:42
2013.03.22
Помогите с алгоритмом


15-1353423286
0xDEADBEEF
2012-11-20 18:54
2013.03.22
неадекватно отображаются компоненты в Windows7


15-1340310602
Юрий
2012-06-22 00:30
2013.03.22
С днем рождения ! 22 июня 2012 пятница


2-1345811633
Егорка
2012-08-24 16:33
2013.03.22
Безопасен ли вызов в DllMain такой функции




   Наверх