tutorials.de Buch-Aktion 05/2012
Seite 1 von 2 12 LetzteLetzte
ERLEDIGT
NEIN
ANTWORTEN
15
ZUGRIFFE
5140
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von MichiStroi
    MichiStroi MichiStroi ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Ort
    Seebenstein (NÖ)
    Beiträge
    162
    Hi,
    Folgendes Problem:

    Ich zeichne ein Diagramm in einem Panel und habe die größe dessen auf die Fenstergröße verknüpft.
    Beim ändern der Fenstergröße wird das Diagramm durch meine Resize Klasse neu gezeichnet. Das ganze wirkt aber sehr störend, da es extrem Flackert.

    2.Problem:
    Ich biete die Möglichkeit in das Diagram zu zoomen, dazu zeichne ich ein Rechteck vom MouseDown-Punkt zum MouseMove-Punkt. Das Rechteck soll also jedesmal wieder neu gezeichnet werden. Allerdings das Diagramm kann gleich bleiben damit es nicht flackert.

    Hat jemand eine Idee wie man dies optimieren kann?
    Danke!
    lg Michi
    Geändert von MichiStroi (22.10.05 um 19:13 Uhr)
     
    Don't hang and loose but run and win!

  2. #2
    Avatar von Alexander12
    Alexander12 Alexander12 ist offline Mitglied Smaragd
    Registriert seit
    Jul 2005
    Ort
    Tutorials.de
    Beiträge
    1.143
    Hi.

    Also gegen flickern stell Ich immer den DoubleBuffer auf true, wenn Ich was mit GDI+ mach...


    MfG Alexander12
     

  3. #3
    Avatar von MichiStroi
    MichiStroi MichiStroi ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Ort
    Seebenstein (NÖ)
    Beiträge
    162
    Hi,
    kann ich das auch für ein Panel einstellen?
    Denn...
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    [C#] 
    public void EnableDoubleBuffering()
    {
       // Set the value of the double-buffering style bits to true.
       this.SetStyle(ControlStyles.DoubleBuffer | 
          ControlStyles.UserPaint | 
          ControlStyles.AllPaintingInWmPaint,
          true);
       this.UpdateStyles();
    }
    ...bewirkt bei mir gar nichts.


    Schönen Dank!
    lg Michi
     
    Don't hang and loose but run and win!

  4. #4
    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
    Damit DoubleBuffer für ein Panel funktioniert, müsstest du von Panel eine Klasse ableiten, dort die entsprechenden DoubleBuffer etc. Einträge vornehmen und dann das von dir erstellte abgeleitete Panel verwenden.

    Eine andere Möglichkeit besteht darin, den Beginn des Resizes, sowie das Ende des Resizes abzufangen und in der Zwischenzeit die Neuzeichnung deines Diagramms zu verhindern. D.h. erst, wenn der Resize abgeschlossen ist, wird gezeichnet.
    tecla bedankt sich. 

  5. #5
    Avatar von MichiStroi
    MichiStroi MichiStroi ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Ort
    Seebenstein (NÖ)
    Beiträge
    162
    Hi,

    Danke, das Erste ist für meine Kenntnisse glaub ich etwas zuviel, aber das Zweite klingt nach einer guten und einfachen Lösung für mein Problem.
    Kann ich eigentlich irgendetwas wie zb. ein Panel auch transparent machen, sodass ich mein Auswahlrechteck über dem eigentlichen Diagramm zeichnen kann ohne dieses Flackern durch die Neuzeichnung meines Diagrammes zu erhalten?

    Schönen Dank!
    lg Michi
     
    Don't hang and loose but run and win!

  6. #6
    Avatar von Alexander12
    Alexander12 Alexander12 ist offline Mitglied Smaragd
    Registriert seit
    Jul 2005
    Ort
    Tutorials.de
    Beiträge
    1.143
    Hi.

    Also Formulare kannst mit dem Opacity-Property trnsparent machen, für Panel gibts das - meines wissens - nicht, lasse mich aber auch gerne eines besseren Belehren.


    MfG Alexander12
     

  7. #7
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    Opacity hilft das wenig weiter. Denn bei 100% Druchsichtigkeit sieht man nix mehr

    Aber:
    Du kannst die BackgroundColor auf "transparent" setzen. Zu finden im Register Web.
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  8. #8
    Avatar von MichiStroi
    MichiStroi MichiStroi ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Ort
    Seebenstein (NÖ)
    Beiträge
    162
    hast du das mit transparent schon getestet?
    Ich erhalte nämlich dennoch ein graues Fenster anstelle transparent.
    lg Michi
     
    Don't hang and loose but run and win!

  9. #9
    Avatar von Nico Graichen
    Nico Graichen Nico Graichen ist offline aka gemballa
    tutorials.de Moderator
    Registriert seit
    Dec 2003
    Ort
    Pulheim (NRW)
    Beiträge
    3.898
    Blog-Einträge
    34
    wo hast du denn Transparent gesetzt? Bei der Form oder beim Panel?
    Bei der Form ist das nicht möglich, macht auch keinen Sinn. Du kannst Transparent nur bei Controls nutzen.
     
    Grüße Nico
    ----------------------
    Xing
    ----------------------
    Zitat Zitat von Mark Twain (1835-1910)
    Es gibt drei Dinge, die eine Frau aus dem Nichts hervorzaubern kann: einen Hut, einen Salat und einen Ehekrach.
    Zitat Zitat von Mike Wilson - Biographie über Larry Ellison (CEO Oracle)
    The Difference Between God and Larry Ellison: God Doesn't Think He's Larry Ellison

  10. #10
    Avatar von MichiStroi
    MichiStroi MichiStroi ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Ort
    Seebenstein (NÖ)
    Beiträge
    162
    Schon klar...
    Gibt's da eine andere Alternative? Wenn man in #Develop ein Rechteck aufzieht (mit dem Auswahlwerkzeug) dann Flackert ja auch nur das Rechteck und sonst nichts.
    Wie geht das denn dort?
    lg Michi
    Miniaturansicht angehängter Grafiken Miniaturansicht angehängter Grafiken Flackern bei Resize verhindern?-panel.gif  
     
    Don't hang and loose but run and win!

  11. #11
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    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.

    Bilder Zoomen ? - Thread
    Ansonsten auch mal auf the Code Project schauen.

    Btw. Frage zu GDI+ Speichern + Anklickbarkeit - Thread
    Da findest noch einen interessanten Link zu GDI+

    MfG, cosmo
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  12. #12
    Avatar von MichiStroi
    MichiStroi MichiStroi ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Ort
    Seebenstein (NÖ)
    Beiträge
    162
    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/de...ithVisualC.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/de...ithVisualC.asp
    Aber da scheint ledeglich die hintergrundfarbe des dahinterliegenden Steuerelement durch, nicht aber meine gezeichneten Striche.

    lg
    Michi
     
    Don't hang and loose but run and win!

  13. #13
    Avatar von Christian Kusmanow
    Christian Kusmanow Christian Kusmanow ist offline Mitglied Diamant
    Registriert seit
    Aug 2004
    Ort
    Aachen (NRW)
    Beiträge
    2.208
    Blog-Einträge
    15
    Zitat Zitat von MichiStroi
    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.
    Oder meinst mit Fertigzeichnen das Du schon was reingemalt hast und es dann verschwindet?

    Zitat Zitat von MichiStroi
    Ich hab auch eine andere Anleitung ausprobiert, wo man einem Steuerelement einen transparenten Hintergrund verpassen kann. http://msdn.microsoft.com/library/de...ithVisualC.asp
    Aber da scheint ledeglich die hintergrundfarbe des dahinterliegenden Steuerelement durch, nicht aber meine gezeichneten Striche.
    Das war immer noch der gleiche Link.
    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. Was zu SetStyle() - Thread

    MfG, cosmo
     
    MfG,
    Christian

    Wer sein Problem definiert, hat es schon halb gelöst!

    Bitte markiert eure Themen als erledigt. Sonst macht so ein Forum als Nachschlagewerk keinen Sinn.

    The Code Project! - C# Programming | C# / VB.NET Pendants

    Regeln + Netiquette

    Liebe FIAEs, verlasst euch nicht auf das was in der Berufsschule "vermittelt" wird
    und vor allem nicht auf das, was euch die IHK dazu erzählt!
    Die haben so viel Ahnung von dem Gewerk, wie der Bundestag vom Haushalt...

  14. #14
    Christoph1972 Christoph1972 ist offline Mitglied Gold
    Registriert seit
    Mar 2005
    Beiträge
    147
    Halllo!

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

    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    
    #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
     

  15. #15
    Avatar von MichiStroi
    MichiStroi MichiStroi ist offline Mitglied Gold
    Registriert seit
    Apr 2004
    Ort
    Seebenstein (NÖ)
    Beiträge
    162
    Hi,

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

    Code :
    1
    
    this.SetStyle(ControlStyles.DoublePuffer,true);
    benötgt laut MSDN diese beiden Werte gesetzt auf "true";
    Code :
    1
    2
    
    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
     
    Don't hang and loose but run and win!

Ähnliche Themen

  1. Automatischen stage-resize verhindern
    Von cycovery im Forum Flash Plattform
    Antworten: 2
    Letzter Beitrag: 09.09.08, 17:57
  2. JFrame - flackern verhindern
    Von Billie im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 24.05.05, 13:03
  3. "flackern" bei refresh verhindern
    Von derAlex im Forum HTML & XHTML
    Antworten: 2
    Letzter Beitrag: 24.11.04, 17:17
  4. flackern verhindern bei IE
    Von hemorrhoid im Forum PHP
    Antworten: 3
    Letzter Beitrag: 04.07.04, 23:42
  5. Bei resize des Fensters auch resize der Controls
    Von SixDark im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 4
    Letzter Beitrag: 25.11.03, 10:27