tutorials.de Buch-Aktion 02/2012
Like Tree3Danke
  • 2 Beitrag von Shakie
  • 1 Beitrag von Terminator2
ERLEDIGT
JA
ANTWORTEN
5
ZUGRIFFE
1825
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Terminator2 Terminator2 ist offline Mitglied Brokat
    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!
     

  2. #2
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.002
    Lass doch die PictureBox weg und zeichne direkt auf das FLP anstatt auf die PictureBox.
     
    hihi = -h²

  3. #3
    Terminator2 Terminator2 ist offline Mitglied Brokat
    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
     

  4. #4
    Avatar von Shakie
    Shakie Shakie ist offline Mitglied Diamant
    Registriert seit
    May 2004
    Ort
    Europa
    Beiträge
    2.002
    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
    Terminator2 und Kekslaster bedanken sich. 
    hihi = -h²

  5. #5
    Terminator2 Terminator2 ist offline Mitglied Brokat
    Registriert seit
    Aug 2005
    Beiträge
    256
    Hey,

    War ja kinderleicht zu implementieren und funktioniert wunderbar. Vielen Dank!


    Grüße
    Kekslaster bedankt sich. 

  6. #6
    Kekslaster Kekslaster ist offline Grünschnabel
    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:
    Code :
    1
    
    Me.SetStyle(ControlStyles.UserPaint Or ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer, True)
    hat es geklappt
    Danke
    Gruß Kekslaster
     

Ähnliche Themen

  1. Ein window-transparentes Panel in einem opaquen Frame.
    Von cojack20 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 05.11.10, 10:11
  2. JPanel wird nicht neu gezeichnet
    Von kuhlmaehn im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 0
    Letzter Beitrag: 24.08.10, 17:41
  3. Panel auf einem Frame wird nur manchmal gezeichnet
    Von Tullinge im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 1
    Letzter Beitrag: 13.12.06, 11:05
  4. Wo wird CTreeView gezeichnet?
    Von jokey2 im Forum VisualStudio & MFC
    Antworten: 1
    Letzter Beitrag: 19.05.05, 09:25
  5. Grafik in PictureBox / Panel Speichern
    Von sitios_ im Forum .NET Archiv
    Antworten: 5
    Letzter Beitrag: 23.04.04, 09:40