Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Komponente selbst "malen"
Nano-Ware - So 19.06.11 18:10
Titel: Komponente selbst "malen"
Hey,
zu aller erst:Ich hab noch nie mit Zeichenobjekten gearbeitet und mache die Komponente zur Übung, also können Empfehlungen für Komponenten die das können wegbleiben :)
So :
Ich möchte einen Tageskalender malen und schon bevor ich anfange hab ich da erstmal folgende Fragen:
- Macht man das mit einer TImage Komponente oder mit etwas anderem?
- Nimmt man dafür Canvas oder was würdet ihr nehmen?
das besondere ist, dass nicht alle Stunden ganz auf die Form passen. Daher möchte ich scrollen können:
- Wie kann ich eine selbstgezeichnete Komponente scrollen?
- Ist das Scrollen dann auch so sauber wie bei anderen Windows Komponenten oder flackert es?
Außerdem sollen Teile davon anklickbar sein:
- Wie erkenne ich, dass ein bestimmter Teil der Komponente angeklickt wurde?
jaenicke - So 19.06.11 18:49
Hier findest du eine komplett selbst gezeichnete Scrollbar. Das ist zwar eine sehr frühe Version mit relativ schlecht geschriebenem Quelltext, aber dafür ist er leichter verständlich als meine aktuelle Version. (Die habe ich mangels Interesse nicht mehr veröffentlicht.)
http://www.delphi-forum.de/viewtopic.php?t=64090
Ja und was das Zeichnen an sich und die Reaktion auf die Maus angeht, findest du hier ein komplett selbst gezeichnetes Periodensystem:
http://www.delphi-forum.de/viewtopic.php?t=91534
Nano-Ware - So 19.06.11 21:17
Danke Herr Jeanicke. Falls ich mich falsch ausgedrückt habe, ich wollte keine Scrollbar zeichnen sondern meine Komponente soll auf eine Scrollbar reagieren..
Und soll ich das mit Canvas machen?
Danke (:
jaenicke - So 19.06.11 22:19
Ob du eine Scrollbar oder eine andere Komponente zeichnest ist vom Prinzip her egal. Das ist nur ein Beispiel. Aber in der Komponente reagiere ich auf die Mausbewegungen und Klicks usw., je nachdem wo diese passieren.
Genau das musst du ja auch machen. Du hast eine Zeichenfläche, also ein Canvas, das ist schon richtig. Und dort zeichnest du drauf und reagierst auf die Maus.
Nur das du eben keine Teile einer Scrollbar zeichnest, sondern Tage.
Nano-Ware - So 19.06.11 23:11
Okay dann hab ich ja was zu tun (: Mir haben nur viele gesagt die Befehle von Canvas währen sehr dürftig (antialiasing fehlt?) und sind sehr langsam stimmt das ?
jaenicke - Mo 20.06.11 05:32
Du kannst natürlich auch mit GDI+ / DirectX arbeiten. Aber für eine normale Komponente braucht man das eigentlich nicht. Es sei denn du willst Animationen einbauen wie in den Ribbon-Komponenten von MS (die nutzen GDI+).
Aber wenn du noch nicht einmal normale Komponenten geschrieben hast, wie willst du dann damit klarkommen? Fang besser erst einmal langsam an... ;-)
n1con - Do 23.06.11 14:33
Kleiner Tipp am Rande: Mit dem Befehl Doublebuffered:= true; bekommst du jedes Canvas ruckelfrei ;).
Funktioniert einwandfrei. Einfach in's OnCreate Event des Image stecken und alles ist ruckelfrei.
LG n1con
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!