In einer GUI Linien zeichnen



  • Hallo!
    Ich habe ein Problem: Ich möchte in einem Panel einer GUI (programmiere mit dem wxDevC++) eine Linie zeichnen: Der Code dazu sieht so aus:

    void GUIFrm::SpielfeldUpdateUI(wxUpdateUIEvent& event)
    {
        wxPaintDC dc(this); 
        dc.DrawRectangle(2,2,GetSize().GetWidth()-2,GetSize().GetHeight()-2);
        int abstand = 10;
        wxPen pen = *wxRED_PEN; 
        pen.SetStyle(wxSOLID); 
        pen.SetWidth(4); 
        dc.SetPen(pen); 
    
        dc.DrawLine(abstand,abstand,GetSize().GetWidth()-abstand,GetSize().GetHeight()-abstand); 
    
    	// insert your code here
    }
    

    Wenn ich die GUI jetzt starte, wird aber leider keine Linie gezeichnet 😕 Weiß jemand, was ich hier falsch mache, bzw. wie so etwas geht?
    Danke und Gruß


  • Mod

    Falscher Event. Du musst in OnPaint zeichnen.
    Genaueres dazu steht im 2. Teil meines wxWidgets Tutorial im Magazin.



  • Ach so, wusste ich gar nicht...
    Wo finde ich denn das Magazin? Sorry, bin neu hier...



  • Habs gefunden, danke danke, dann such ich da mal weiter!
    Schönen Tag



  • Hmm, nu habe ich leider das Problem, das mein Frame überhaupt kein OnPaint Event kennt... Da gibts zur Auswahl nur dieses UpdateUI-Event. Habe aber diese Event_Table gefunden, könnte man das nicht da deklarieren?
    Und noch eine Frage: In dem von dir beschriebenen Teil soll es einen Link auf das komplette Programm geben, aber dieser funktioniert leider nicht 😞 Hast du das Programm noch?
    Schöne Grüße



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    NeuerUser2007 schrieb:

    Hmm, nu habe ich leider das Problem, das mein Frame überhaupt kein OnPaint Event kennt... Da gibts zur Auswahl nur dieses UpdateUI-Event. Habe aber diese Event_Table gefunden, könnte man das nicht da deklarieren?
    Und noch eine Frage: In dem von dir beschriebenen Teil soll es einen Link auf das komplette Programm geben, aber dieser funktioniert leider nicht 😞 Hast du das Programm noch?
    Schöne Grüße

    Doch doch, wxFrame kennt diesen Event.
    Verwendest du irgendeinen GUI Editor?

    Hm, komisch, bin mir sicher das ich es hochgeladen habe.
    Werde ich heute abend dann nochmals tun müssen.



  • Hmm, bei mir bietet der nur diesen blöden UpdateUI Event an. Also ich verwende diesen wxDevC++ Editor, wenn dir der was sagt?!

    Das wäre supi, wenn du das hochladen könntest, dann würd ich mir das nochmal genauer anschauen.

    Schöne Grüße und danke!


  • Mod

    Eigentlich ists ganz einfach:

    in deiner Frame.cpp:

    //im Eventtable
    EVT_PAINT(MyFrame::OnPaint)
    
    // OnPaint Handler
    void MyFrame::OnPaint(wxPaintEvent& e)
    {
      wxPaintDC dc(this);
    // zeichnen
    }
    

    Die OnPaint Methode musst du natürlich auch im Header deklarieren.

    phlox



  • Lol, genau so hatte ich es auch schon versucht, aber ich hab es EVT_ON_PAINT genannt 😉 Danke dafür!
    Wär aber trotzdem cool, wenn man den kompletten Code nochmal so zur Anschauung sehen könnte...MfG!!!!


Anmelden zum Antworten