Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Unterschied Caption - Canvas
D. Annies - So 21.02.10 10:18
Titel: Unterschied Caption - Canvas
Hi, Delpher,
ich habe eben ne ganze Runde gegooglet, aber nichts brauchbares gefunden: Was ist eigentlich der Unterschied bei einem Label zwischen den Zuweisungen Labelx.caption und Labelx.canvas?
Wer kann das gut erklären?
Gruß, Detlef
Xion - So 21.02.10 10:22
Caption ist die Beschriftung (eine String-Variable)
Canvas ist die Zeichenfläche, da kannst du dann mit den Zeichenfunktionen von Delphi in dem Label rummalen.
Delphi-Quelltext
1: 2:
| Label1.Canvas.MoveTo(0,0); Label1.Canvas.LineTo(10,10); |
Anmerkung: Du kannst auch per Canvas schreiben:
Delphi-Quelltext
1:
| Label1.Canvas.TextOut('mööp'); |
Gausi - So 21.02.10 10:23
Caption ist ein String, Canvas eine Zeichenfläche. Oder anders ausgedrückt: Ein Apfel ist ein Apfel, und eine Birne eine Birne. :nixweiss:
D. Annies - So 21.02.10 11:15
Ich stelle mir gerade vor, ich bin Schüler und ihr zwei meine Lehrer.
Wer bei dieser Frage/Antwort der bessere ist, darüber habe ich keinen Zweifel,
aber über eine "Antwort" habe ich sehr gelacht.
Gruß, Detlef
Was ich mit meiner Frage meinte, ist: Was geht mit canvas, was mit caption nicht geht und umgekehrt?
Dazu noch ne Idee?
jaenicke - So 21.02.10 11:20
Mit Canvas kannst du auch Bilder malen, mit Caption kannst du dauerhaft einen Text auf dein Label zaubern ohne aufs Neuzeichnen zu reagieren.
D. Annies - So 21.02.10 11:22
Das klingt schon verständlicher (wohl nicht nur für mich)
Detlef
D. Annies - So 21.02.10 11:36
P.S. Wie kann man die Canvas wieder löschen / neu zeichnen?
Hidden - So 21.02.10 11:43
Hi :)
Wahrscheinlich ist TLabel für dich die falsche Komponente, wenn du auf ein Canvas malen willst. Besser wären TPaintbox(die dir vollen Zeichenzugriff bei jedem Repaint gibt, und wo danach wieder alles weg ist wie beim label) oder auch TImage(was du hier draufmalst, ist permanent).
Bei einem TLabel kannst du wahrscheinlich wie bei jeder anderen Win-Komponente ein Neuzeichnen durch .Repaint auslösen(gerade kein Delphi zur Hand).
lg,
D. Annies - So 21.02.10 11:47
Hi, Daniel,
ich vermute ganz stark, dass du recht hast (für meine Zwecke), ich bin da jetzt auch schon misstrauisch geworden. Repaint werde ich noch mal ausprobieren.
Danke, Detlef
jaenicke - So 21.02.10 11:51
Ein Invalidate reicht aus. Damit sagt man, dass der aktuelle Inhalt der Komponente nicht mehr aktuell ist und daher neu gezeichnet werden muss. Aber Repaint geht natürlich auch.
D. Annies - So 21.02.10 13:07
Leider geht weder repaint noch invalidate, diese Properties sind unbekannt.
:(
jaenicke - So 21.02.10 13:09
Das muss dann an deiner alten Delphiversion liegen, bei mit kennt ein Label beide Methoden. :nixweiss:
// EDIT:
Ich hoffe doch du suchst nach den Befehlen nicht im Objektinspektor...
Xion - So 21.02.10 13:11
soweit ich weiß, nicht Canvas.Repaint
D. Annies - So 21.02.10 13:43
Nein, Sebastian, ich setze es im Code.
aber jetzt hab ich's.
Natürlich musste die Zeile heißen:
Delphi-Quelltext
1:
| if kompo is TLabel then TLabel(kompo).Invalidate; |
Danke, Xion.
Man muss eben immer genau hingucken!
Gruß, Det
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!