Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

16.03.2009, 16:37

Problem beim rendern einer Bitmap unter wxWidgets

Hallo,
ich will in meinem wxWidgets Programm eine Bitmap rendern. Aber der Kompiler spuckt immer folgenden Fehler aus:
error C2665: "wxDCBase::DrawBitmap": Durch keine der 2 Überladungen konnten alle Argumenttypen konvertiert werden.
1> c:\sourcecode\libraries\wxwidgets2.8\include\wx\dc.h(269): kann 'void wxDCBase::DrawBitmap(const wxBitmap &,wxCoord,wxCoord,bool)' sein
1> bei Anpassung der Argumentliste '(wxBitmap **, wxCoord, wxCoord, bool)'
Der Teil meines Codes:

C-/C++-Quelltext

1
2
3
    m_pbFarmer=new wxBitmap(wxT("Data/Farmerb.bmp"));
    if(m_pbFarmer->IsOk())
        wxDC::DrawBitmap(&m_pbFarmer, wxCoord(50), wxCoord(50), false);

Kann mir jemand helfen? Vielen dank schon mal voraus.

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

2

16.03.2009, 16:39

gugg dir den ersten parameter nochmal genau an. er erwartet eine referenz auf ein wxBitmap (const wxBitmap &) aber du übergibst die adresse von deinem zeiger auf das wxBitmap ((wxBitmap **, ...) ;).

so wäre es üblich:

C-/C++-Quelltext

1
2
3
    wxBitmap m_bFarmer(wxT("Data/Farmerb.bmp"));
    if(m_bFarmer.IsOk())
        wxDC::DrawBitmap(m_bFarmer, wxCoord(50), wxCoord(50), false);


oder so wenn du unbedingt die dynamische version haben willst:

C-/C++-Quelltext

1
2
3
    m_pbFarmer = new wxBitmap(wxT("Data/Farmerb.bmp"));
    if(m_pbFarmer->IsOk())
        wxDC::DrawBitmap((*m_pbFarmer), wxCoord(50), wxCoord(50), false);


EDIT: sry für die x-fachen edits. jetz sollte es stimmen und vollständig sein.

3

17.03.2009, 15:55

ich habe jetzt das mal in das hier umgeschrieben:

C-/C++-Quelltext

1
2
3
    wxBitmap m_bFarmer=wxBitmap(wxT("Data/Farmerb.bmp"));
    if(m_bFarmer.IsOk())
        wxDC::DrawBitmap(m_bFarmer, wxCoord(50), wxCoord(50), false);

Aber jezt kommt dieses Meldung:
error C2352: 'wxDCBase::DrawBitmap': Unzulässiger Aufruf einer nicht statischen Memberfunktion
1> c:\sourcecode\libraries\wxwidgets2.8\include\wx\dc.h(269): Siehe Deklaration von 'wxDCBase::DrawBitmap'
Das verstehe ich auch nicht, muss ich erst eine Instanz von wxDC machen?

TrommlBomml

Community-Fossil

Beiträge: 2 117

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

4

17.03.2009, 15:58

Zitat von »"Hobby Programmierer"«

ich habe jetzt das mal in das hier umgeschrieben:

C-/C++-Quelltext

1
2
3
    wxBitmap m_bFarmer=wxBitmap(wxT("Data/Farmerb.bmp"));
    if(m_bFarmer.IsOk())
        wxDC::DrawBitmap(m_bFarmer, wxCoord(50), wxCoord(50), false);

Aber jezt kommt dieses Meldung:
error C2352: 'wxDCBase::DrawBitmap': Unzulässiger Aufruf einer nicht statischen Memberfunktion
1> c:\sourcecode\libraries\wxwidgets2.8\include\wx\dc.h(269): Siehe Deklaration von 'wxDCBase::DrawBitmap'
Das verstehe ich auch nicht, muss ich erst eine Instanz von wxDC machen?


genau ;) aber wieso malst du über ein wxDC? zeichen doch auf das objekt, was du möchtest!

5

17.03.2009, 17:33

ich will das eientlich nur in mein Fenster rein zeichnen. Dort ist dann ein wxPanel Objekt. Aber wie soll ich das dann zeichnen?

DasBlub

Alter Hase

Beiträge: 802

Wohnort: Schweiz

Beruf: Programmierer

  • Private Nachricht senden

6

17.03.2009, 17:46

Zitat von »"Hobby Programmierer"«

ich will das eientlich nur in mein Fenster rein zeichnen. Dort ist dann ein wxPanel Objekt. Aber wie soll ich das dann zeichnen?


statt "wxDC::" nimmst du halt "deinPanel->" ;)

7

17.03.2009, 17:50

aber DrawBitmap ist kein Element von wxPanel.

fkrauthan

Supermoderator

Beiträge: 979

Wohnort: Vancouver

Beruf: Software engineer

  • Private Nachricht senden

8

21.03.2009, 12:10

muss nicht im wxPanel einen wxDC erst hinzufügen um auf dem zeichen zu können Bzw gab es nicht eine Fuktion um an wen wxDC eines jeden Elementes zu kommen?
Homepage: fkrauthan.de | Browser-game: flowergame.net

9

21.03.2009, 14:41

Dein Beitrag hat mich auf eine Idee gebracht. Nach etwas suchen, habe ich das hier gefunden. http://www.c-plusplus.de/forum/viewtopic-var-t-is-175682.html
Wenn ich das so mache, wie dort beschrieben, gibt es keine Fehler mehr.
Mein einziges Problem ist jetzt nur noch, dass das Programm denkt, dass es die Bitmap aus einer .rc laden soll. Was es aber nicht soll. Wenn das dann auch noch geklappt hat, weis ich, dass ich den Fehler gefunden habe, und werde mich dann nochmal melden.

10

23.03.2009, 15:27

ok, das mit dem zeichnen geht nun, wie es im Artikel beschrieben wird.

Werbeanzeige