neu zeichnen von Grafiken in einer PictureBox



  • Hallo,
    ich habe in einer Form eine Picturebox, die die freie Fläche der Form ausfüllt. In der PictureBox ist ein Image geladen. Mit PictureBox.CreateGraphics() erzeuge ich kleine Grafiken in der PictureBox, die dem geladenen Image überlagert werden. Zwischendurch werden die Grahiken durch eine zweite Form verdeckt.

    Die verdeckten Grafiken werden nicht neu gezeichnet wenn die zweite Form verschoben oder minimiert wird.

    Die Ereignisse Form.Paint und PictureBox.Move benutze ich bereits. PictureBox.Paint wird bei jeder Kleinigkeit ausgelöst so daß sich das Programm nur noch mit dem Ereignis PictureBox.Paint beschäftigt.

    Ich suche nach einem Ereignis mit dem ich ein neu zeichnen der Grafik auslösen kann.

    Danke
    Evi48



  • haste es mit OnPaint mal versucht?



  • Hallo Ixtana,
    ich schreibe mit C# .NET und gehe mal davon aus, dass OnPaint (ich denke das ist C++) und Paint von C# das gleiche ist. Wenn ich dieses Ereignis von PictureBox benutze wird bei jeder Kleinigkeit, die sich in der Oberfläche verändert das Ereignis ausgelöst und das Programm beschäftigt sich fast nur noch mit dem Paint-Ereignis, was den Ablauf stört bis sogar unmöglich macht.

    Ich suche also nach einer Möglichkeit/Ereignis dass nicht ständig ausgelöst wird sondern nur wenn Teile der Grafik wieder sichtbar werden.

    Danke
    Evi48



  • Hallo,
    ich habe das Ereignis Form.GotFocus gefunden und kann mir vorstellen mein Problem damit zu lösen. Doch wie weise ich GotFocus einen Eventhandler zu?
    😕
    Evi48



  • Guten Moregen,
    wenn die Zeit nicht immer so drängen würde das wäre doch schön. Eine Nacht geschlafen und so sieht ein nicht optimales aber auf die Schnelle nutzbares Ergebnis aus.

    Die Ereignishandle den Ereignissen GotFocus und LostFocus zuweisen

    this.GotFocus	+= new EventHandler(FormKarte_GotFocus);
    this.LostFocus	+=new EventHandler(FormKarte_GotFocus);
    

    Um bei Groessenaenderungen, Abdeckungen oder dem Verschieben mit den Scrollbars die Grafiken neu zu zeichnen muessen die nachstehenden Ereignisshandle genutzt werden.

    private void FormKarte_Paint(object sender, ystem.Windows.Forms.PaintEventArgs e)
    {
      TNRefresh();
    }
    private void pictureBoxKarte_Move(object sender, System.EventArgs e)
    {
      TNRefresh();
    }
    private void FormKarte_GotFocus(object sender, EventArgs e)
    {
      TNRefresh();
    }
    

    Einen erfolgreichen Tag und ein schönes Wochenende
    Evi48


Anmelden zum Antworten