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 : 1

Valid XHTML 1.0 Transitional

Valid CSS2

Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» wxGrid et image
Conversation : wxGrid et image
07-12-2007 22:21:26  wxGrid et image #1
Warzer (Membre)
Inscrit le : 05-10-2007
Messages: 284
Snippets: 4
Tutoriels: 0
Hors ligne
Salut,
J'ai une simple question à poser peut on mettre une image dans une cellule d'un wxGrid parcequ'avec mon code sa ne marche pas du tonerre ...

Code wxWidgets:

 
BEGIN_EVENT_TABLE(RpgCarteFrame, wxFrame)
    EVT_GRID_CELL_LEFT_CLICK(RpgCarteFrame::OnCellClicked)
END_EVENT_TABLE()
 
 
 
RpgCarteFrame::RpgCarteFrame(wxFrame *frame, const wxString& title,int w, int h, int x, int y)
    : wxFrame(frame, -1, title)
{
    m_grilleMap = new wxGrid(this,-1);
    m_grilleMap->CreateGrid(x,y);
    for(int i = 0; i < x;i++)
        m_grilleMap->SetColSize(i,128);
    for(int i = 0; i < y;i++)
        m_grilleMap->SetRowSize(i,96);
    for(int i = 0; i < x;i++)
    {
        for(int j = 0; j < y;j++)
            m_grilleMap->SetReadOnly(i,j);
    }
 
    m_grilleMap->DisableCellEditControl();
    m_grilleMap->DisableDragColMove();
    m_grilleMap->DisableDragColSize();
    m_grilleMap->DisableDragGridSize();
    m_grilleMap->EnableEditing(false);
}
 
void RpgCarteFrame::OnCellClicked(wxGridEvent &event)
{
    wxImage image;
    image.LoadFile(_T("./textures/terrains/1.jpg"),wxBITMAP_TYPE_ANY);
    int x = event.GetCol()*128 + 82;
    int y = event.GetRow()*96 + 32;
    wxBitmap imgBmp(image);
    imgBlit = new wxStaticBitmap(this,-1,imgBmp, wxPoint(x,y),wxSize(imgBmp.GetWidth(),imgBmp.GetHeight()));
    std::cout << _T("Col : ") << event.GetCol() <<  _T(" Lig : ") << event.GetRow() << std::endl;
    std::cout << _T("x : ") << x <<  _T(" y : ") << y << std::endl;
    std::cout << _T("x1 : ") << x-82 <<  _T(" y1 : ") << y-32 << std::endl;
    std::cout << std::endl;
}
 


Voilà merci ++
07-12-2007 22:39:42  Re: wxGrid et image #2
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Salut.

A mon avis, c'est une mauvaise idée de passer par un wxGrid pour faire ce que tu veux faire.
Je pense que la wxGrid est plus destinée à afficher du texte.

Pour "fracionner" ta map avec une grille, essayes plutôt de passer par un wxGridSizer :

- Admettons que tu veuilles diviser ta map en morceaux de 128x128 pixels :
- Tu crées le wxGridSizer en calculant le nombre de lignes et de colonnes
- Tu mets un wxStaticBitmap dans chaque "case" avec un wxBitmap "noir" de 128x128

- A chaque clic : tu récupères le wxBitmap du wxStaticBitmap concerné, et tu le modifies avec le wxBitmap tu terrain à mettre dessus.
- Il te faudra évnetuellement modifier plusieurs cases d'un coup, car il se peut que le terrain à ajouter soit à cheval sur plusieurs cases.

Avec cette solution, tu n'auras plus le problème de ralentissement que tu avais avec le maxi wxBitmap.
----------
Mince, j'avais pas vu que tu en parlais déjà dans l'autre topic.

Dernière modification par Xaviou (07-12-2007 22:50:55)


Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
07-12-2007 23:17:28  Re: wxGrid et image #3
Warzer (Membre)
Inscrit le : 05-10-2007
Messages: 284
Snippets: 4
Tutoriels: 0
Hors ligne
Le problème avec cette solution c'est que si la carte est trop grande il met super lontemps à créer la fenetre et à afficher tout les bitmaps dans chaques cases du sizer

Dernière modification par Warzer (07-12-2007 23:18:18)

07-12-2007 23:36:33  Re: wxGrid et image #4
Xaviou (Administrateur)
Lieu: Annecy (74)
Inscrit le : 27-08-2007
Messages: 1390
Snippets: 25
Tutoriels: 6
Site web
Hors ligne
Bon, je viens de faire l'essai :
- un wxGridSizer avec un wxStaticBitmap dans chaque case.
- le même bitmap (un jpeg de 180x130 pixels) dans chaque wxStaticBitmap

La création d'une grille de 50x50 prend environ 1 seconde, et la destruction des contrôles également (ça fait quand même une map de 9000x6500)

Donc, à mon avis, il faut se pencher sur SFML.

Le nouveau portail wxWidgets francophone : www.wxdev.fr
Ben en fait, vous y êtes déjà... et effectivement, depuis le temps, ce n'est plus tellement nouveau....
Menu forum (navigation):
Pages: 1  
 
Accueil » Accueil forums » Utilisation générale wxWidgets
» wxGrid et image