TPanel und zeichnen

Rund um die LCL und andere Komponenten
Antworten
Harry
Beiträge: 7
Registriert: Mi 18. Feb 2009, 08:24

TPanel und zeichnen

Beitrag von Harry »

Kann man in den Canvas eines TPanel etwas zeichnen? Ein Panel1.Canvas.Rectangle(0,0,50,50) hat leider nichts gebracht.

Harry

KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

Re: TPanel und zeichnen

Beitrag von KOBOLD Messring GmbH »

Das geht, man muss nur auch Pen.Color und Brush.Color auf z.B. clBlack oder clRed setzen, denn z.B. Weiss auf Weiss sieht man schlecht :wink:
Und dann wichtigste: Diese Zeichnungen müssen in das Ereignis OnPaint rein, sonst sind sie ja nicht dauerhaft, d.h. vielleicht bleiben sie sichtbar, solange das Fenster nicht neu aufgebaut werden muss. Sendet der Fenster-Manager aber eine Paint-Message an die Anwendung, schwuppdiewupp ist die Canvas wieder leer.

Harry
Beiträge: 7
Registriert: Mi 18. Feb 2009, 08:24

Re: TPanel und zeichnen

Beitrag von Harry »

OK, danke, hab's.

Ein Panel scheint ja keinen OnPaint-Event zu haben (jedenfalls bietet mir Lazarus keinen an). Aber wenn ich in das Panel eine TPaintBox setze und in deren OnPaint-Event zeichne, dann klappt alles wunderbar.

Hab's bisher immer nur im OnPaint-Event des TForms versucht.

Harry

KOBOLD Messring GmbH
Beiträge: 155
Registriert: Mi 22. Aug 2007, 14:52
OS, Lazarus, FPC: Mandriva Linux 2008 (L 0.9.28 FPC 2.2.4)
CPU-Target: 32Bit
Wohnort: 65719 Hofheim am Taunus
Kontaktdaten:

Re: TPanel und zeichnen

Beitrag von KOBOLD Messring GmbH »

Auch ein Panel hat ein OnPaint-Ereignis. Ist aber (glaube ich) nicht published und man siehts nicht im Objekt-Inspector.
Kann man aber "per Hand" auf eine eigene Routine setzen.
Wird auch angeboten mit dem Code-Tool, wenn man den punkt (und ein "o") eingibt und 1 sek. wartet.
Dateianhänge
panel_onpaint.png

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TPanel und zeichnen

Beitrag von pluto »

Ein Panel ist eigentlich nicht zum zeichnen da, es geht zwar, aber zum zeichnen solltest du andere Wege nehmen, z.b.:
01 - Über eine TPaintBox oder eine TImage, beide unterscheiden sich nur geringfügig.
Je, nach Vorhaben ist eine TPaintBox oder eine TImage am besten geeignet.

02 - Du kannst dir auch deine eigene Komponente erstellen, indem du von TCustomControl ableitest. Diese Klasse verfügt über eine Canvas Eigenschaft, die du auch fürs Zeichnen nehmen kannst.
MFG
Michael Springwald

marcov
Beiträge: 1102
Registriert: Di 5. Aug 2008, 09:37
OS, Lazarus, FPC: Windows ,Linux,FreeBSD,Dos (L trunk FPC trunk)
CPU-Target: 32/64,PPC(+64), ARM
Wohnort: Eindhoven (Niederlande)

Re: TPanel und zeichnen

Beitrag von marcov »

Das Problem ist glaube ich das manche Systemen (wie zb QT) kein Zeichnen ausserhalb das Paint-event erlauben. Es ist besser wann moeglich TPaintBox zu nutzen.

pluto
Lazarusforum e. V.
Beiträge: 7192
Registriert: So 19. Nov 2006, 12:06
OS, Lazarus, FPC: Linux Mint 19.3
CPU-Target: AMD
Wohnort: Oldenburg(Oldenburg)

Re: TPanel und zeichnen

Beitrag von pluto »

Stimmt. Das Problem kann ich immer noch nicht nach vollziehen. Weil es Technisch einfach nicht umzusetzen ist. Ich kann es mir nicht vorstellen.
Schließlich ist der Canvas ja immer eine Zeichen Fläche. Warum sollte das anders sein ? Gerade bei einem Panel. Das Panel ist dafür zwar nicht ausgelegt, aber möglich ist es. Ich frage mich sowieso warum das Panel einen Public Canvas hat. Bei anderen Komponenten währe das viel sinvoller wenn man dort mehr Einfluss auf das Zeichnen hätte.

PS: Für 2D Spiele habe ich auch eine eigene 2D Engine geschrieben auf Bases von Canvas. Hier im Forum gibt es sie zum Downloaden. Viele sachen die unter DOS möglich sind/waren sind es auch bei meiner 2D Engine. Sie ist für Spiele ausgelegt wie Snake, Sokubahn, Brekout und soweiter. Aber auch für komplexere Spiele wie Run & Jump Spiele. Allerdings sollte die Objekte nicht allzu aufwendig sein. Z.B. nicht so viele Animationen und sowas. Möglich währe sowas, aber nicht um beding sinnvoll.
MFG
Michael Springwald

Harry
Beiträge: 7
Registriert: Mi 18. Feb 2009, 08:24

Re: TPanel und zeichnen

Beitrag von Harry »

marcov hat geschrieben:Das Problem ist glaube ich das manche Systemen (wie zb QT) kein Zeichnen ausserhalb das Paint-event erlauben. Es ist besser wann moeglich TPaintBox zu nutzen.
Ich arbeite unter Mac OS mit Carbon. Hier kann man -- laut einem Wiki-Eintrag -- anscheinend tatsächlich nicht außerhalb des jeweiligen OnPaint-Events zeichnen. Einige eigene Versuche bestätigen dies. Wenn man auf Portabilität aus ist sollte man das dann wohl auf allen Plattformen beachten.

Harry

Antworten