Flackern bei Resize verhindern?

Christian Kusmanow

Erfahrenes Mitglied
Hallo Michi!

Erstell eine Klasse die von Panel erbt und ruf deine Methode EnableDoubleBuffering() darin im Kontruktor auf.
Dann musst Du noch den Auswahlrahmen deines Panels zeichnen.
Dann zeichnest Du dieses erweiterte Panel, so wie Du es schon sagtest, über deine Grafik
dazu zeichne ich ein Rechteck vom MouseDown-Punkt zum MouseMove-Punkt.
Nach dem MouseUp hast dann deine Koordinaten zum zoomen. :)

[thread=158891]Bilder Zoomen ? - Thread[/thread]
Ansonsten auch mal auf the Code Project schauen.

Btw. [thread=218953]Frage zu GDI+ Speichern + Anklickbarkeit - Thread[/thread]
Da findest noch einen interessanten Link zu GDI+

MfG, cosmo
 

MichiStroi

Erfahrenes Mitglied
Hi,
Erstmals Danke für deine Tipps!

Ich hab das Steuerelement geerbt und ein neues mit dem DubbleBuffer im Konstruktur erstellt. (http://msdn.microsoft.com/library/d...hroughCreatingInheritedControlWithVisualC.asp)
Jetzt verschwindet das Steuerelement jedesmal wenn es fertiggezeichnet ist. Ist das das Ziel dessen?

Ich hab auch eine andere Anleitung ausprobiert, wo man einem Steuerelement einen transparenten Hintergrund verpassen kann. http://msdn.microsoft.com/library/d...hroughCreatingInheritedControlWithVisualC.asp
Aber da scheint ledeglich die hintergrundfarbe des dahinterliegenden Steuerelement durch, nicht aber meine gezeichneten Striche.

lg
Michi
 

Christian Kusmanow

Erfahrenes Mitglied
MichiStroi hat gesagt.:
Jetzt verschwindet das Steuerelement jedesmal wenn es fertiggezeichnet ist. Ist das das Ziel dessen?
Wenn Du UserPaint eingestellt hast und selber nichts zeichenst, dann ja. :D
Oder meinst mit Fertigzeichnen das Du schon was reingemalt hast und es dann verschwindet?

MichiStroi hat gesagt.:
Ich hab auch eine andere Anleitung ausprobiert, wo man einem Steuerelement einen transparenten Hintergrund verpassen kann. http://msdn.microsoft.com/library/d...hroughCreatingInheritedControlWithVisualC.asp
Aber da scheint ledeglich die hintergrundfarbe des dahinterliegenden Steuerelement durch, nicht aber meine gezeichneten Striche.
Das war immer noch der gleiche Link. :p
Zeichne die Striche mal ohne UserPaint hinein. Wenn Du sie dann auch nicht siehst,
hast sie ausserhalb des Rectangles gezeichnet.
Wenn Du sie dann aber auf einmal sehen solltest, hab ich keine Ahnung.

Btw. [thread=210406]Was zu SetStyle() - Thread[/thread] ;)

MfG, cosmo
 

Christoph1972

Erfahrenes Mitglied
Halllo!

Also, ich mache das mit dem Me.DoubleBuffered, und zwar so:.

Code:
#Region " Vom Windows Form Designer generierter Code "

    Public Sub New()


        MyBase.New()

        ' Dieser Aufruf ist für den Windows Form-Designer erforderlich.

        InitializeComponent()
        Me.DoubleBuffered = True
        '=======================

       
        MyColor = Color.Silver
        ' Add any initialization after the InitializeComponent() call.
        

    End Sub

Gruß
Christoph
 

MichiStroi

Erfahrenes Mitglied
Hi,

naja, schon langsam bekomm ich ja einen Überblick...aber...

Code:
this.SetStyle(ControlStyles.DoublePuffer,true);
benötgt laut MSDN diese beiden Werte gesetzt auf "true";
Code:
this.SetStyle(ControlStyles.AllPaintingInWmPaint,true);
this.SetStyle(ControlStyles.UserPaint,true);

allerdings spielt da "AllPaintingInWmPaint" nicht mit. Sobald dieser auf true gesetzt wird, verschwindet das Diagramm nach dem neuzeichnen.

Happy Halloween
Michi