Grafik verschwindet, wenn sie verdeckt wird



  • Ich habe mit

    Grafik = this->CreateGraphics();
    Grafik->FillEllipse(Brushes::Black, 10, 10, 100, 100);
    

    einen gefüllten Kreis erstellt. Wenn jetzt ein anderes Fenster meine Grafik verdeckt, und ich mein Programm wieder in den Vordergrund hole, ist die Grafik verschwunden. Kann ich das ändern? Die Grafik soll bleiben.

    Danke schonmal für eure Hilfe
    MfG

    PS: In Google hab' ich nichts gefunden.



  • Im MFC-Forum würde ich sagen: du musst deine Sachen in der OnPaint-Methode zeichnen, damit die auch bei Bedarf wieder neu gezeichnet werden. Keine Ahnung, ob das bei C++/CLI und Forms anders ist...



  • _matze schrieb:

    Im MFC-Forum würde ich sagen: du musst deine Sachen in der OnPaint-Methode zeichnen, damit die auch bei Bedarf wieder neu gezeichnet werden. Keine Ahnung, ob das bei C++/CLI und Forms anders ist...

    Richtiger Ansatz. Du hast 3 Möglichkeiten:

    • Du überschreibst die OnPaint -Methode des Objektes, auf dem gezeichnet werden soll und zeichnest alles dort drin.
    • Du assozierst ein ein delegate vom Typ System::Windows::Forms::PaintEventHandler mit dem Ereignis Paint des Objekts, auf dem gezeichnet werden soll und zeichnest alles im delegate.
    • Du ersetzt das Objekt auf dem gezeichnet wird durch eine PictureBox und zeichnest auf die Bitmap, die angezeigt wird. Dann musst du dich nicht mehr um das neu zeichnen kümmern.

    MfG



  • Sorry, aber geht das auch im Klartext? Bin noch ziemlich neu. In Büchern steht auch immer das was ich am wenigsten brauche und Google liefert auch nix brauchbares. 😡

    Danke für die Antwort 👍



  • Na ja, ich weiß nicht, wie viel klarer man das noch in ein, zwei Sätzen formulieren kann. Du musst die OnPaint-Methode deines Dialogs überschreiben (ist klar, wie das geht?). Jedesmal, wenn der Dialog neu gezeichnet werden muss - z.B., weil er zwischenzeitlich verdeckt wurde -, wird OnPaint aufgerufen. Also musst du dein Zeug in dieser Methode zeichnen, damit es bei Bedarf auch neu gezeichnet wird.



  • Ich habe das schon verstanden und ich weiß das das Formular neu gezeichnet werden muss, aber ich weiß nicht, wie ich OnPaint überschreibe.

    Edit: OK. Hab's. Kann ich den aktuellen Zustand des Formulars irgendwie abspeichern?



  • Hunterson schrieb:

    Kann ich den aktuellen Zustand des Formulars irgendwie abspeichern?

    Hmm, wie meinst du das? Falls du die Werte deiner Controls festhalten willst, kannst du natürlich alles in einer Datei speichern und die beim Programmstart wieder auslesen und die Werte setzen.


Log in to reply