![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Работа с 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 - это уже указатель.