Форум: "Начинающим";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
Внизрасширить функции TCanvas Найти похожие ветки
← →
zorik © (2006-10-09 17:15) [0]Заранее извиняюсь за глупый вопрос. Можно ли расширить функции Tcanvas, т.е. написать наследника, и потом использовать эти функции в стандартных визуальных компонентах (TImage, TPaintBox и вывод на печать)?
← →
Ketmar © (2006-10-09 17:24) [1]давай скажем, что нет. более того -- зачем?
← →
Джо © (2006-10-09 17:28) [2]TCanvas вообще расширять смысла особого нет. У TCanvas Handle:HDC не привязан ни к какому device context"у, так что и рисовать-то на нем нельзя.
← →
Джо © (2006-10-09 17:29) [3]Хотя, это еще, конечно, выяснить нужно, что имеется в виду под "расширением".
← →
zorik © (2006-10-09 17:29) [4]для построения карт - сплайнов, различных типов линий, и т.д.
Было б удобно если б:with Image.Canvas do
begin
Pen.Width := 5;
Pen.Style := psSyperStyle;
MoVeTo(0, 0);
SplineTo(10, 10);
...
end;
Но как-то запросто было-б :-(
← →
guav © (2006-10-09 17:31) [5]Можно сделать что-то вроде:
type
;
TCustomizedCanvas = class(TControlCanvas)
...
end
C := TCustomizedCanvas.Create;
C.Control := PaintBox;
Хотя действительно зачем ? Да, TCanvas реализует немонгие возможности GDI, но почему бы для остальных не использовать сами функции GDI с Canvas.Handle в качестве параметра.
← →
guav © (2006-10-09 17:33) [6]> У TCanvas Handle:HDC не привязан ни к какому device context"у,
> так что и рисовать-то на нем нельзя.
Сколько рисовал используя TCanvas.Handle , а тут оказывается нельзя... С чего бы это ?
← →
Джо © (2006-10-09 17:36) [7]> [6] guav © (09.10.06 17:33)
> > У TCanvas Handle:HDC не привязан ни к какому device context"у,
>
> > так что и рисовать-то на нем нельзя.
>
> Сколько рисовал используя TCanvas.Handle , а тут оказывается
> нельзя... С чего бы это ?
С того, что рисовал, вероятно, на наследниках TCanvas, например TBitmapCanvas и TControlCanvas, в которых перекрыт CreateHandle.
← →
Джо © (2006-10-09 17:41) [8]> [7] Джо © (09.10.06 17:36)
Хм. А Handle-то, оказывается, вовсе не read-only. Тогда я в калоше, выходит :)
← →
guav © (2006-10-09 17:47) [9]> [7] Джо © (09.10.06 17:36)
Действительно, не обращал внимания, что экземпляры самого TCanvas обычно не создаются.
Однако, у TMetafileCanvas CreateHandle не перекрыт, но рисовать там вполне можно...
← →
Ketmar © (2006-10-09 18:07) [10]>[8] Джо(c) 9-Oct-2006, 17:41
>я в калоше, выходит :)
в маленькой. %-)
← →
icWasya © (2006-10-09 18:10) [11]Ну по простому можно так
type
TSuperCanvas=class(TCanvas)
constructor Create(Canva:TCanvas);
destructor Destroy;override;
procedure DrawSuperPuperLine;
end;
...
constructor TSuperCanvas.Create(Canva:TCanvas);
begin
inherited;
self.Handle:=Canva:Handle;
end;
destructor TSuperCanvas.Destroy;
begin
Handle:=0;
inherited;
end;
procedure TSuperCanvas.DrawSuperPuperLine;
begin
Pen.Width := 5;
MoVeTo(0, 0);
LineTo(10, 10);
LineTo(10, 0);
LineTo(10, 20);
...
end;
...
with TSuperCanvas.Create(Image.Canvas) do
try
DrawSuperPuperLine;
finally
free;
end;
← →
Kolan © (2006-10-09 23:21) [12]
> Можно ли расширить функции Tcanvas
Класс помошник?
← →
Ketmar © (2006-10-09 23:32) [13]>[12] Kolan(c) 9-Oct-2006, 23:21
>Класс помошник?
типа того. %-)
← →
Джо © (2006-10-09 23:35) [14]> [12] Kolan © (09.10.06 23:21)
> Класс помошник?
Это ж только в 2-х последних версиях Делфи появилось.
← →
Kolan © (2006-10-09 23:36) [15]
> Это ж только в 2-х последних версиях Делфи появилось.
Ну дык появилось же :)
← →
Zeqfreed © (2006-10-09 23:39) [16]> [14] Джо © (09.10.06 23:35)
> Это ж только в 2-х последних версиях Делфи появилось.
Ой а что надо набрать в хелпе чтобы почитать об этом?
P.S. Уже иду набирать Helper class :)
← →
Zeqfreed © (2006-10-09 23:41) [17]М-м, нашел Class helpers. Но тогда это получаются помошники классов, а не классы-помошники. :)
← →
Kolan © (2006-10-09 23:44) [18]
> помошники классов, а не классы-помошники.
Ну они то тоже классы. Значит классы помошники классов выходит.
PS
Кстати как я понял JavaScript на этом принципе построен?
← →
Ketmar © (2006-10-10 00:19) [19]>[18] Kolan(c) 9-Oct-2006, 23:44
> Кстати как я понял JavaScript на этом принципе построен?
могу ошибиться от недосыпу, но, по-моему, у тебя терминологическая путаница.
← →
Kolan © (2006-10-10 00:27) [20]
> у тебя терминологическая путаница
Вроде не замечал, хотя...в чем она заключается?
← →
Ketmar © (2006-10-10 00:32) [21]я же сказал -- могу ошибиться. меня гложат смутные сомнения, но обосновать их я не могу. %-)
← →
Kolan © (2006-10-10 00:48) [22]Да Class Helpers не класс, а ТИП так говорится в начале справки.
А в примере, получается что все же класс:TMyClass = class
procedure MyProc;
function MyFunc: Integer;
end;
...
type
TMyClassHelper = class helper for TMyClass
procedure HelloWorld;
function MyFunc: Integer;
end;
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2006.10.29;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.065 c