tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
2
ZUGRIFFE
361
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    proprogger proprogger ist offline Mitglied Bronze
    Registriert seit
    Dec 2005
    Beiträge
    34
    Ich habe eine Frage zum Style-Flag von Controls.
    Da kann man ein Bit setzen für DoubleBuffering.
    Das geht beim Formular z.b. so: Me.SetStyle(DoubleBuffering)

    Das DoubleBuffering ist doch dazu da dass Zeichenoperationen erst nach Beendingung der Funktion / Sub / Event auf dem Bildschirm aktualisiert werden.
    Ich möchte das mit einem Panel machen, dessen Paint-Event viele Zeichenoperationen beinhaltet.
    Bei mousemove wird alles neugezeichnet und wenn ich mit der Maus drüberfahre flackert das Ganze, weil die Zeichenoperationen gleich auf dem Bildschirm aktualisiert werden.

    Jetzt hab ich das mit dem Style-Flag gelesen und wollte DoubleBuffering für das Panel aktivieren.
    Aber man kann es nur mit "Me" machen (also die Form), weder mit Form selbst (z.B. Form1) noch mit nem Panel oder sonst was, da SetStyle protected ist.

    Hab es mal mit Me probiert und die Zeichenoperationen auf Me gesetzt statt auf Panel und dann hat er alles was vorher im Panel gezeichnet wurde logischerweise ins Form gemalt. Und das ohne zu flackern beim "mit-der-Maus-drüberfahren" und so.

    Kennst sich da jemand aus mit dem protected?
    Dass ich dann SetStyle auf das Panel anwenden kann.
    Oder eine Alternativ-Lösung zu dem Problem.

    Falls es wichtig ist: Ich progge in VB.NET.

    Danke im Vorraus,
    MfG,
    proprogger
     

  2. #2
    Avatar von Norbert Eder
    Norbert Eder Norbert Eder ist offline Mitglied Diamant
    Registriert seit
    Feb 2004
    Ort
    Österreich / Graz
    Beiträge
    5.137
    Blog-Einträge
    51
    Du musst vom Panel ableiten und im Konstruktor der abgeleiteten Klasse kannst du dann das DoubleBuffering setzen.

    Beispiel:
    Code :
    1
    2
    3
    4
    5
    6
    7
    
    public class PanelEx : System.Windows.Forms.Panel {
     
      public PanelEx() {
          // Hier DoubleBuffering aktiveren
      }
     
    }
    Ausserdem hast du DoubleBuffering falsch verstanden:
    Bei aktiviertem DoubleBuffering werden die Änderungen in einer quasi zweiten Bildschirmoberfläche gezeichnet. Wurde alle Änderungen fertig übernommen, wird die tatsächliche Bildschirmoberfläche ausgeblendet und der bereits fertige Bereich eingeblendet.

    Zum Thema protected:
    Wie wärs mit einfach ins Codefenster schreiben, Cursor darauf setzen und F1 drücken?
     

  3. #3
    proprogger proprogger ist offline Mitglied Bronze
    Registriert seit
    Dec 2005
    Beiträge
    34
    Ja das mit dem DoubleBuffering hab ich schon richtig verstanden, aber im Prinzip ist für den Benutzer nur der Unterschied zu sehen, dass es auf dem Bildschirm erst nach Beenden der Zeichenfunktionen sichtbar wird. Ich weiß schon was DoubleBuffering genau ist

    Aber Danke für die Antwort, hab das Problem jetzt gelöst! Hab das Panel überschrieben und im Constructor die SetStyle()-Methode aufgerufen, um DB zu aktivieren.

    MfG,
    proprogger
     

Ähnliche Themen

  1. Binary-Flag und Pointer Kombinieren?!
    Von Enumerator im Forum C/C++
    Antworten: 1
    Letzter Beitrag: 19.02.10, 21:33
  2. Flat Style für WPF Controls
    Von luna im Forum .NET WPF & Silverlight
    Antworten: 0
    Letzter Beitrag: 23.10.09, 14:43
  3. Variable / Flag zum Sperren einer Datenbankbearbeitung
    Von Rukh75 im Forum Javascript & Ajax
    Antworten: 1
    Letzter Beitrag: 17.10.09, 01:26
  4. Antworten: 2
    Letzter Beitrag: 26.10.05, 16:24
  5. Kurze Frage: fcntl Flag löschen?
    Von jccTeq im Forum C/C++
    Antworten: 0
    Letzter Beitrag: 10.03.05, 09:03