Einzelnen Beitrag anzeigen

Stephan

Registriert seit: 28. Jun 2002
Ort: Tuttlingen
245 Beiträge
 
Delphi 2007 Professional
 
#6

Re: Konzeptionelle Frage: einfaches "Zeichenprogramm&am

  Alt 13. Jul 2007, 11:28
Hallo tom,

Ich hatte sowas in die Richtung schonmal programmiert. Verwendet hatte ich hierfür eine TPaintBox da hier Zeichenoperationen einfach viel schneller sind als in einem TImage. Gezeichnet habe ich alles in einer einzigen TPaintBox. Da allerdings mehrere Zeichenoperationen ein unangenehmes Flackern hervorrufen, habe ich nicht direkt in die PaintBox sondern in ein TBitmap gezeichnet. Anschließend habe ich das TBitmap auf die Zeichenoberfläche der PaintBox kopiert. Dies hat auch noch den Vorteil, dass du im OnPaint Ereignis der PaintBox den Inhalt aus dem Bitmap direkt wieder in die PaintBox einfügen kannst (ansonsten würde der Inhalt der PaintBox verschwinden, wenn du ein anderes Fenster darüber ziehst). Ich hatte damals aus Performancegründen mehrere Schichten von TBitmap's verwendet. Nur als kleines Beispiel: Ich hatte in der Zeichenoberfläche ein kleines Raster eingeblendet. Damit dieses Raster nicht jedes mal neu gezeichnet werden muss (das würde sonst sehr lange dauern), habe ich dieses in ein TBitmap gespeichert. Nun wurde dieses Raster aus dem ersten TBitmap in ein zweites kopiert und anschließend wurden diverse Objekte aus irgendwelchen Arrays oder Records eingezeichnet. Zu guter letzt wurde der Inhalt in die Paintbox kopiert. Das ganze war sehr schnell und es hat absolut nichts geflackert.

Zitat:
aber darum die Frage: macht das Sinn? Das Rad hier zum 10^7 mal neu erfinden?
Das kommt darauf an, was du genau vor hast. Das Selbermachen wäre natürlich mit einem gewissen Lernerfolg verknüpft. Wenn du allerdings schnell zu deinem Ziel kommen willst, dann wärst du vielleicht mit einer fertigen Bibliothek besser bedient. Du darfst auch nicht vergessen, dass du mit der oberen Methode zwar alles einzeichnen kannst, allerdings kannst du im Moment noch keine Objekte anklicken, verschieben usw. Hier musst du eben entsprechende Routinen in "OnClick" einbauen, welche anhand der Koordinaten des Mauszeigers das passende Objekt heraussuchen.
viele Grüße

Stephan
  Mit Zitat antworten Zitat