![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Canvas как параметр
Urvin © (2006-06-26 08:22:00)Хочу сделать функцию, где среди ее параметров хотел бы видеть канвас того объекта, на котором хочу порисовать, например че-та подобное
procedure DrawLine(var C: TCanvas);
begin
c.moveto(0,0); c.lineto(10,10);
end;
...
...
DrawLine(BitMap1.Canvas)
проблема в том, что свойства объекта C меняют свой привычный синтаксис.
объясните, в чем я неправ?
tButton (2006-06-26 09:11:00) [1]
> Сейчас они сбиваются на те, которые по умолчанию
естественно =)
а может забить на имадж? =)
сделай себе объект tBitMap и рисуй на нём
с последующим BitBlt или если угодно
BitMap1.Image.Canvas.Draw
MBo (2006-06-26 09:11:00) [2]приведенного в нулевом посте код (без var) вполне достаточно, больше ничего не нужно
procedure DrawLine(C: TCanvas);
begin
c.moveto(0,0);
c.lineto(10,10);
end;
Urvin (2006-06-26 09:09:00) [3]
c:=tCanvas.Create;
вот так пошло)))
а можно сделать так, чтобы все настройки типа шрифотов, цветов итп были теми, которые я указал до вызова функции?
Сейчас они сбиваются на те, которые по умолчанию
tButton (2006-06-26 09:07:00) [4]
> MBo
> >Urvin
> >свойства объекта C меняют свой привычный синтаксис.
> ????
С - объект передаваемый в процедуру =)
очевидно синтаксис меняется при переходе от tBitMapCanvas к tCanvas
или как их там, не помню точно =)
tButton (2006-06-26 09:04:00) [5]каюсь =)
c:=tCanvas.Create;
или
b:=tBitMap.Create;
или
button:=tButton.Create=)
главное что? что? Create надо, после Create присвоить хендл, а вот Free - ненадо, или надо но перед этим хендл поменять на исходный
т.е.
b:=tBitMap.Create;
old_handle:=b.Handle;
b.Handle:=h;
... // графические изощрения
b.Handle:=old_handle;
b.Free;
так правильно
а то если я скажу, что память всё-равно освобождается сама - меня запинают =)
MBo (2006-06-26 09:01:00) [6]Буду краток ;)
>Urvin
>свойства объекта C меняют свой привычный синтаксис.
????
>tButton © (26.06.06 08:25) [1]
;))))
Urvin (2006-06-26 08:51:00) [7]Access Violation At adress.... =(
Urvin (2006-06-26 08:31:00) [8]пасиба большое! =)
tButton (2006-06-26 08:25:00) [9]
procedure DrawLine(h: HWND);
var
c: tCanvas;
begin
c.handle:=h;
c.moveto(0,0); c.lineto(10,10);
end;
...
...
DrawLine(BitMap1.Canvas.Handle);
так.
или так
procedure DrawLine(h: HWND);
var
b: tBitMap;
begin
b.handle:=h;
b.Canvas.moveto(0,0); b.Canvas.lineto(10,10);
end;
...
...
DrawLine(BitMap1.Handle);
эксперементируй =)