![]() |
Alternative zur Paintbox
Hallo zusammen,
ich bin gerade ein wenig am Verzweifeln. Habe auf einer Form eine Paintbox, in der verschiedene Hintergründe gezeichnet werden müssen - abhängig davon, was der Benutzer ausgewählt hat. Auf diesen Hintergrund kann der Benutzer nun mit einem Mausklick Stellen markieren. Mein Problem nun bei dieser Sache: - Das gezeichnete verschwindet, wenn das Fenster in den Hintergrund gerät, also von einem anderen Fenster verdeckt wird - der Grund für dieses Verhalten ist bekannt - Die Paintbox mit allen vom Benutzer markierten Stellen - es können bis zu 60 sein - jedes mal neuzeichnen ist für mich keine Alternative, da es unheimlich flackert --> nicht schön Ich bin leider bei der Grafikprogrammierung nicht so firm. Gibt es Alternativen zur Paintbox oder ist die Herangehensweise generell "falsch" bzw. verbesserungswürdig? Was ich möchte ist ein Hintergrund, der wenn er einmal gezeichnet wurde statisch bleibt. Daran ändert sich nichts mehr. Lediglich die markierten Stellen, die vom Benutzer kommen sollten einen gewissen Grad der Dynamik aufweisen --> anwählbar, löschen, evtl. verschieben. Jemand ne Idee, wie ich sowas am besten lösen könnte? |
AW: Alternative zur Paintbox
Es Verschwindet, weil DU etwas vergessen hast.
TImage.Bitmap.Canvas, da geht alles alleine. ODER: TPaintBox hat nicht umsonst ein OnPaint-Ereignis. Da drin mußt du deinen Inhalt neu zeichnen, wenn die Komponente neu gezeichnet wird. * entweder man merkt sich was gezeichnet werden muß und zeichnet es da neu * oder man benutzt ein Offscreenbitmap (ein temporäres Bild) ** beim OnPaint wird dieses Bitmap auf den Canvas kopiert ** hier entweder immer doppelt zeichnen (in das Temp-Bitmap und auf das PaintboxCanvas) ** oder immer nur ins Bitmap zeichnen und anschließend ein PaintBox.Repaint auslösen |
AW: Alternative zur Paintbox
Zitat:
Zitat:
Zitat:
Zitat:
|
AW: Alternative zur Paintbox
Zitat:
Das statische Bild kannst Du Dir ja einmal erzeugen und dann als Basis immer wieder benutzen und die Änderungen darauf zeichnen. Wenn Du etwas mit Schieben haben willst, dann solltest Du Dir die Sachen von Graphics32 (TImgView32) angucken. Dort kann man mit Layern arbeiten. Die Einarbeitung kostet aber etwas Zeit. Grafik ist aber grundsätzlich aufwendig (insbesondere die Einarbeitung). ![]() |
AW: Alternative zur Paintbox
Zitat:
Zitat:
Hier ein kleines Beispiel: ![]() |
AW: Alternative zur Paintbox
Zitat:
![]() ![]() ![]() |
AW: Alternative zur Paintbox
Danke für die Tips... Ich werds heute Nachmittag mal probieren und berichten.
|
AW: Alternative zur Paintbox
Hallo nochmal...
Also, ich habe mir nun mal die Geschichte mit dem Offscreen Bitmap angeschaut. Das hilft mir nun schon mal weiter. Die gezeichneten Sachen bleiben erhalten, auch wenn das Fenster geschlossen oder verdeckt wird. --> Super. Was mir allerdings noch etwas Kopfzerbrechen macht, bzw. was mich etwas überrascht ist die Tatsache welcher Aufwand notwendig wird, wenn die vom Benutzer markierten Stellen verwaltet werden sollen. :shock: Hier werd ich noch ein gutes Stück Arbeit vor mir haben... Trotzdem vielen Dank! |
AW: Alternative zur Paintbox
Zitat:
|
AW: Alternative zur Paintbox
Update:
Bin jetzt soweit, dass ich Bereiche markieren kann... Habs allerdings nicht mit gezeichneten Objekten gelöst, sondern erzeuge mir bei jedem Klick auf die Paintbox an der Stelle eine neue Komponente von Typ TShape. Damit kann ich flexibler arbeiten. Hinzufügen geht, löschen, ... bis jetzt bin ich zufrieden. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:27 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz