3Danke
ERLEDIGT
JA
JA
ANTWORTEN
5
5
ZUGRIFFE
1825
1825
EMPFEHLEN
-
14.02.10 15:41 #1
- Registriert seit
- Aug 2005
- Beiträge
- 256
Hallo Leute,
Sitze gerade an einem wohl eher bekanntem Problem.
Ich habe eine PictureBox, die je nach Mausposition schonmal per Invalidate neu gezeichnet wird, halt ein wenig animiert. Funktionier auch alleine sehr gut.
Auf dieser PictureBox verwende ich ein FlowLayoutPanel, in dem ich kleine PictureBoxen mit Miniaturansichten lagere.
Um das Aussehen abzurunden, habe ich den Hintergrund des FLP tranparent gesetzt, was auch beim Standbild gut aussieht. Nur leider flackert das Panel immer dann kurz auf, wenn ich mit meiner Maus ein "Invalidate" der PictureBox auslöse. Ich kann mir nicht vorstellen, dass es da keine gute Lösung für gibt. Habe mich schon im Internet umgeschaut und den ein oder anderen Befehl eingefügt, allerdings ändern die bei mir gar nichts
Ich kann übrigens auch nicht auf das Panel verzichten, wäre sonst eine einfache Lösung
Würde mich freuen, wenn mir Jemand von euch in irgendeiner Weise weiterhelfen könnte. Vielen Dank!
-
Lass doch die PictureBox weg und zeichne direkt auf das FLP anstatt auf die PictureBox.
hihi = -h²
-
14.02.10 19:51 #3
- Registriert seit
- Aug 2005
- Beiträge
- 256
Hey,
Wäre natürlich eine gute Idee. Allerdings ist das Flow Panel ja nur ein Teil meines Bildes. ich nutze es als eine Art Sidebar, in der ich dann Snapshots ablegen kann.
Die Picturebox füllt die gesamte Form aus, hat ein Hintergrundbild und beinhaltet dann die ganzen gezeichneten Objekte, sowie das ein oder andere Steuerelement. Nur das Flow Panel macht mir Probleme wegen dem transparenten Hintergrund. Würde nur ungern darauf verzichten, weil man das doch irgendwie snchronisieren können muss.
Grüße
-
Habe ein bisschen herumexperimentiert. Wenn du den OptimizedDoubleBuffer-Flag auf true setzt, dann sollte dein Problem gelöst sein. Das kannst du mit der Control.SetStyle-Methode machen. Diese ist aber geschützt, das heißt du musst ein neues Control erstellen, welches von FlowLayoutPanel erbt und dieses dann statt deinem herkömmlichen FlowLayoutPanel verwenden:
Code vbnet:1 2 3 4 5 6 7
Public Class DoubleBufferedFlowLayoutPanel Inherits FlowLayoutPanel Public Sub New() Me.BackColor = Color.Transparent Me.SetStyle(ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer, True) End Sub End Class
hihi = -h²
-
15.02.10 10:19 #5
- Registriert seit
- Aug 2005
- Beiträge
- 256
Hey,
War ja kinderleicht zu implementieren und funktioniert wunderbar. Vielen Dank!
Grüße
-
08.02.12 19:38 #6
- Registriert seit
- Feb 2012
- Beiträge
- 1
Hi, bin neu hier in diesem Forum.
Hab lange gesucht wie ich das Flackern in ner Form verhindern kann.
Mit:
hat es geklapptCode :1
Me.SetStyle(ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer, True)
Danke
Gruß Kekslaster
Ähnliche Themen
-
Ein window-transparentes Panel in einem opaquen Frame.
Von cojack20 im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 05.11.10, 10:11 -
JPanel wird nicht neu gezeichnet
Von kuhlmaehn im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 0Letzter Beitrag: 24.08.10, 17:41 -
Panel auf einem Frame wird nur manchmal gezeichnet
Von Tullinge im Forum Swing, Java2D/3D, SWT, JFaceAntworten: 1Letzter Beitrag: 13.12.06, 11:05 -
Wo wird CTreeView gezeichnet?
Von jokey2 im Forum VisualStudio & MFCAntworten: 1Letzter Beitrag: 19.05.05, 09:25 -
Grafik in PictureBox / Panel Speichern
Von sitios_ im Forum .NET ArchivAntworten: 5Letzter Beitrag: 23.04.04, 09:40





Zitieren
Login




