simonko,
ich brauche so ein Control regelmässig. Der Delphi-Code unten zeigt, wie man den "canvas" öffentlich zugänglich machen kann:
Delphi-Quellcode:
type
(* --- *)
TeditableControl = class(TcustomControl)
private { private declarations }
FbackGround : Tbitmap;
FOnPaint : TnotifyEvent;
published
property canvas;
property color;
public { public declarations }
constructor create( owner : Tcomponent ); override;
destructor destroy; override;
procedure paint; override;
(* properties *)
property backGround : TbitMap
read FbackGround write FbackGround;
property OnPaint : TnotifyEvent
read FOnPaint write FOnPaint;
end;
(* --- *)
Tcontrol ist dann unvermeidlich, wenn man z.B. auf dem canvas Polygone zeichnen und editieren will. Eine übliche Technik besteht darin, die Knickpunkte des Polygons mit Markierungen (z.B. kleinen Quadraten vom Typ Tcontrol) darzustellen. Diese Markierungen kann man dann mit der Maus verschieben und so die Gestalt des Polygons verändern. Objekte vom Typ Tcontrol brauchen als "parent" ein Objekt vom Typ "TwinControl". Genau dafür benutze ich das TeditableControl.
Zum einfachen Zeichnen oder zum Anzeigen von Bitmaps ist TpaintBox viel einfacher zu handhaben.
mare_crisium