Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Работа с TBitMap


karambos ©   (2012-06-19 21:50:00) 

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

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 что-то постоянно меняется.


karambos   (2012-06-19 22:22:00) [1]

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


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

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


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


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

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


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

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


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


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

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

var
 b: TBitmap;

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


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

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

Так:
procedure drawBMP(b: TBitmap)

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


Наверх

Титульная страница Поиск, карта сайта Написать письмо