Hintergrund neu zeichnen?
-
Hallo,
ich schreibe ein Programm bei dem ich mehrere Komponenten dynamisch auf meinem MainForm plaziere. Diese Komponenten gehören teilweise inhaltlich zusammen und diese Zusammengehörigkeit zeige ich indem ich auf dem MainForm Linien zwischen diesen Komponenten zeichne. Dies klappt soweit auch ganz gut.
Wenn ich jetzt aber eine Komponente verschiebe, muss sich ja auch die Linie verschieben also löse ich ein neu zeichnen des MainForms aus mitRepaint();
Und hier ist das Problem, das Repaint zeichnet alles neu inklusive meiner Komponenten. Dies führt zu einem flackern und dauert auch sehr lange.
Gibt es eine Möglichkeit nur den Hintergrund des MainForms neu zeichnen zu lassen ohne die Komponenten die sich auf diesem Befinden?
-
Bei einem Form-Repaint() gibt es direkt keine andere Möglichkeit (d.h. die enthaltenen Controls werden immer mit neugezeichnet). Du könntest aber "DoubleBuffered = true" für die Form setzen, um das Flackern zu vermeiden.
Oder aber alternativ ein Panel bzw. eine PaintBox als Hintergrund für deine Linien benutzen (DockOrientation = Fill) und dann nur deren Repaint()-Methode aufrufen.
-
DoubleBuffered auf true setzen verhindert schon mal das häßliche flackern.
Ich glaub das lass ich auch so.Vielen Dank.
Ps. meine Hilfe sagt es gibt bei DockOrientation nur
enum TDockOrientation { doNoOrient, doHorizontal, doVertical };
"Fill" gibt auch n Compiler-Fehler. Hab ich da was nicht beachtet?
Ich benutze RAD Studio 2009
-
Sorry, falsche Eigenschaft gepostet (bei .NET heißt es Dock) - ich meinte "Align = alClient" -)