wxDev.fr, le portail francophone consacré à wxWidgets ! ( The french portal for wxWidgets )  
Esp. membre
Recheche rapide



Recherche avancée
Statistiques
Membres inscrits :2359

Membres en ligne : 0
Invités en ligne : 7

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Probleme bitmap
Conversation (Résolue) : Probleme bitmap
18-06-2010 17:31:38  Probleme bitmap #1
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
Bonjour,

J'ai, je pense, un problème simple à résoudre, mais bon ...

Je souhaite tout simplement afficher un bitmap et j'ai l'erreur suivante à la compilation :

C:\Documents and Settings\yannp\Mes documents\Perso\Developpement\wx\YAPE_Music\windowsComposition.cpp|141|error: no matching function for call to `wxDC::DrawBitmap(wxBitmap*&, int, int, bool)'|
C:\SourceCode\Libraries\wxWidgets2.8\include\wx\dc.h|271|note: candidates are: void wxDCBase::DrawBitmap(const wxBitmap&, wxCoord, wxCoord, bool)|
C:\SourceCode\Libraries\wxWidgets2.8\include\wx\dc.h|274|note:                 void wxDCBase::DrawBitmap(const wxBitmap&, const wxPoint&, bool)|
||=== Build finished: 3 errors, 0 warnings ===|


la méthode :


Code:

 
void partition::OnDraw(wxDC &dc)
{
    int             i, x, y;
    wxBitmap        *b;
 
    b= new wxBitmap (wxT("C:\\clef_sol.bmp"), wxBITMAP_TYPE_BMP);
    this->GetVirtualSize(&x, &y) ;
    dc.SetPen (*wxGREY_PEN);
 
    dc.DrawBitmap(b, 20, 50, true);
 
    for (i=0;i<y/zoom;i+=1)
        dc.DrawLine(zoom+1, i*zoom, x, i*zoom);
 
    dc.SetPen (*wxBLACK);
    for (i=0;i<5;i++)
        dc.DrawLine(zoom+1, i*zoom, x, i*zoom);
}
 


merci d'avance....
18-06-2010 17:40:37  Re: Probleme bitmap #2
Sem (Membre)
Inscrit le : 31-05-2008
Messages: 64
Snippets: 0
Tutoriels: 0
Hors ligne
bonjour,
il te faut déférencer ton pointeur sur l'image comme cela :

Code wxWidgets:

dc.DrawBitmap(*b, 20, 50, true);


Cela dit, c'est une très mauvaise approche que tu as, car tu vas charger l'image à chaque appel de OnDraw. L'idéal serait de charger à l'avance ton image.

Par exemple :

Code wxWidgets:

 
partition::partition(..)
{
  ...
  m_ClefDeSol = new wxBitmap(wxT("C:\\clef_sol.bmp"), wxBITMAP_TYPE_BMP);
  ...
}
 
partition::~partition()
{
   wxDELETE(m_ClefDeSol);
}
 
 
void partition::OnDraw(wxDC &dc)
{
    int             i, x, y;
 
    this->GetVirtualSize(&x, &y) ;
    dc.SetPen (*wxGREY_PEN);
 
    dc.DrawBitmap(*m_ClefDeSol, 20, 50, true);
 
    for (i=0;i<y/zoom;i+=1)
        dc.DrawLine(zoom+1, i*zoom, x, i*zoom);
 
    dc.SetPen (*wxBLACK);
    for (i=0;i<5;i++)
        dc.DrawLine(zoom+1, i*zoom, x, i*zoom);
}
 


Sem

Dernière modification par Sem (18-06-2010 17:44:06)

21-06-2010 08:10:36  Re: Probleme bitmap #3
yannp (Membre)
Inscrit le : 02-06-2010
Messages: 61
Snippets: 0
Tutoriels: 0
Hors ligne
Salut,
Ok ça marche. Je suis d'accord avec toi (pour le chargement de l'image), mais c'est un essai.

Merci d'avance.
Yann

Dernière modification par yannp (21-06-2010 14:32:22)

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Développement C/C++
» Probleme bitmap