Announcement

Collapse
No announcement yet.

Graphik verschwindet ständig

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Graphik verschwindet ständig

    Hallo!

    In meinem kleinen Programm wird eine Baumstruktur mit Linien der Methode Graphics.drawLine dargestellt.
    Wenn ich das Fenster minimiere oder ein anderes Fenster darüber ziehe, verschwindet alles wieder. Wenn ich das Formular verkleinere, wirkt es wie ein Radiergummi, das alles gezeichnete wieder enfernt. Und es wird auch nur das gezeichnet, was auf die Formulargröße passt.

    Wie kann ich das ändern? Wie kann ich die Graphik beibehalten?

    Würd mich tierisch über Antworten freuen!

    Viele Grüße,
    Martin

  • #2
    Martin,

    Du solltest Deine Baumstruktur im Paint-Ereignis der Komponente zeichnen, auf der Du sie darstellst. Damit ist sichergestellt, dass sie immer dann gezeichnet wird, wenn der Inhalt ungültig wird.

    Im Parameter System.Windows.Forms.PaintEventArgs e bekommst Du ein Graphics-Objekt geliefert mit dem Du zeichnen kannst.

    Beispiel:

    private void panel1_Paint(object sender, System.Windows.Forms.PaintEventArgs e) {
    Graphics g = e.Graphics;
    g.DrawLine(new Pen(Color.Red),10,10,20,20 );
    }

    HTH
    Pete

    Comment


    • #3
      Vielen Dank für Deine Antwort, Peter!
      Klappt super damit!

      Nur ein Problem besteht noch: wenn ich runterscrolle, verwischt die gesamte Struktur, d.h die Linien werden alle wieder das Stück weiter runter gezeichnet, das auch runter gescrollt wurde.
      Gibts da auch ne Möglichkeit das zu unterbinden bzw. nur das anzeigen zu lassen, was die aktuelle Scrollposition auch hergeben sollte?

      Danke schön!

      Gruß,
      Marti

      Comment


      • #4
        Hallo Martin,

        Du musst beim Zeichnen die Position der Scrollbars berücksichtigen.

        Die Form liefert Dir diese in ihrer Property AutoScrollPosition.X bzw AutoScrollPosition.Y.

        Einfach wäre es aber, nicht direkt auf die Form sondern auf ein auf der Form liegendes Panel zu zeichnen. Dann bleibt die linke obere Ecke nämlich immer (0,0), egal, ob gescrollt wurde oder nicht.

        Gruß
        Pete

        Comment


        • #5
          Hi Peter,

          nochmals vielen Dank!
          Jetzt funktioniert alles einwandfrei.

          Viele Grüße,
          Mathia

          Comment

          Working...
          X