PDA

View Full Version : [C++] wxWidgets disegnare bitmap


Gaston
25-11-2005, 16:28
Help!!! Sto impazzendo!!!!

Sono riuscito a caricare una bmp (o altri formati) su di un pannello... Ora però voglio poter cambiarla con un'altra immagine dello stesso formato... Ad esempio quando l'utente clicca su un bottone appare un altra immagine e si toglie quella di prima... Solo ke questo puntualmente non avviene, ma rimane sempre la vecchia immagine.

Ho provato ad utilizzare la funzione refresh(), a costruire un nuovo DC nell'evento del bottone... e molti altri tentativi!!! ma nulla... :cry:

Tu buon anima che leggi questo topic e conosci la soluzione
non andare via senza aver aiutato un uomo in disperazione! :(

Gaston
25-11-2005, 18:27
Sempre peggio... avrò fatto 1 milione di tentativi ma nisba!!! ci deve pur essere qualcuno ke lo sa no?

kk3z
25-11-2005, 18:47
Fai vedere un po' di codice, è più facile vedere l'errore :)

Gaston
25-11-2005, 19:56
Ecco il codice. Ho messo solo la funzione per l'evento disegno e quella per l'evento menu apri... è solo una prova. Praticamente voglio ke quando uno clicca su Apri dal menu File cambia l'immagine da Ciao2 a Ciao3, tutto qui.


pannello::pannello(wxWindow * parent) : wxPanel(parent, -1) {
nomeFile = "C:\\ciao2.jpg";
}

void disegnaImg(wxDC &dc, wxString name) {
wxImage::AddHandler(new wxJPEGHandler);
wxImage immagine(name, wxBITMAP_TYPE_JPEG, -1);
wxBitmap imgbmp(immagine, -1);
dc.SetBrush(*wxTRANSPARENT_BRUSH);
dc.DrawBitmap(imgbmp, 0, 0, -1);
}

void pannello::OnPaint(wxPaintEvent &event) {
wxPaintDC dc(this);
dc.SetBrush(*wxTRANSPARENT_BRUSH);
disegnaImg(dc, nomeFile);
}

void pannello::OnMenuApri(wxMenuEvent &event) {
nomeFile = "C:\\ciao3.jpg";
Refresh();
}


nomeFile è un membro wxString (stringa) privato della classe pannello (ereditata da wxPanel).