Control - Onpaint flackert

  • C#

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Glossy Cherry.

    Control - Onpaint flackert

    Hey,
    Wie der Titel schon sagt flackert bei mir in C# ein Control heftig trotz DoubleBuffer = true bei der form und beim control. Hab auch schon SetStyle probiert und:

    Quellcode

    1. protected override CreateParams CreateParams
    2. {
    3. get
    4. {
    5. CreateParams cp = base.CreateParams;
    6. cp.ExStyle |= 0x02000000; // Turn on WS_EX_COMPOSITED
    7. return cp;
    8. }
    9. }

    Was könnte ich machen um das flackern weg zu machen?

    Greetz
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Chrisber“ ()

    Probier zusätlich die/das Flag AllPaintingInWmPaint bei SetStyle.

    Häufig liegt das Flackern auch an einer unvorteilhaft angewendeten Invalidate Methode.
    Invalidiere am besten nur den Bereich der wirklich neu gezeichnet werden muss.

    VB.NET-Quellcode

    1. Me.Invalidate(RectangleF);



    Wann das alles nichts hilft solltest du deinen Code im OnPaint nochmal überarbeiten.

    EDIT: Deine CreateParams() Geschichte gehört nicht in die eigentliche UserControl-Klasse
    sondern in deine 'Haupt-Form'.

    Siehe: Übernächster Post Link

    Liebe Grüße
    /nicht getestet

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „rotherford“ ()

    Nutzt du Xy.CreateGraphics() zum Zeichnen?

    MFG
    Jetzt schnell und einfach das Zehnfingersystem mit Scribble 3 erlernen. Mehr Informationen und Download gibts hier. Redundancy2 - leichtgewichtige freie Cloudsoftware. Folge mir auf GitHub
    Wie schon teilweise gesagt wurde:

    - Zeichnen im Paint-Event (kein Pfusch mit CreateGraphics!)
    - Zeichenroutine optimieren (wenig Berechnungen/Schleifen => Datenstruktur muss eben passen und halbwegs durchdacht sein, während des Zeichnens keine Bilder laden oder sonstige zeitaufwändige operationen durchführen, ..)
    - nur das neuzeichnen, was auch wirklich neuzuzeichnen ist. Meistens reicht es schon aus .Invalidate einen Bereich zu übergeben. Wenn man es ganz genau machen will kann man den ein oder anderen Post vom ErfinderDesRades durcharbeiten (gezieltes OwnerDrawing etc).
    - DoubleBuffred auf True setzten
    - Einen Zeichenpuffer benutzen (BufferedGraphics)
    Ich nutze e.graphics. Alles andere schau ich mir mal an.
    Moderatorin: "Apropo ritzen.." Shin Chan: "hoho sie hat Po ritze gesagt"
    "saying to buy a mac because your anti-virus expired is like saying you're out of condoms so you're just going to go fuck dudes"
    "Wie auch in anderen Threads kann ich leider nichts bieten außer vielleicht spaß beim Skypen aber mehr leider auch nicht." - Sind kinder pornos nicht verboten?