T
Also das Anzeigen der Bilder funktioniert jetzt schonmal so, wie ich mir das vorgestellt habe, vielen Dank.
Leider ist jetzt noch ein kleines Problem im Weg:
Wenn ich scrolle (die Bilder sind zu groß für meine Fenster), wird zwar verschoben, aber die Daten, die eigentlich neu kommen sollten, kommen nicht. Es wird also mit der Hintergrundfarbe aufgefüllt.
Wenn ich jetzt das Fenster verkleinere und den nichtgefüllten Bereich "überdecke", dann wieder auf ursprüngliche Größe ausdehne, ist das Bild so gezeichnet, wie es sein sollte. Daher vermute ich mal, dass ich irgendwie nach dem Scrollen nochmal neu zeichnen lassen muss...
Ich hoffe, mein Problem ist hier klar geworden. Wie kann ich es denn lösen?
Das ist mein OnPaint handler für ein Panel, das u.a. das wxScrolledWindow display enthält, in das das Bild gezeichnet werden soll.
void PnlPhaseDistribution::OnPaint (wxPaintEvent& event){
wxPaintDC dcDummy(this);
wxPaintDC dc (display);
display->DoPrepareDC(dc);
dc.DrawBitmap(*displayBMP, 0, 0);
}
Und hier werden die Scrollbars eingestellt, wenn das Panel im Programm angezeigt werden soll.
// Zeigt das Panel PhaseDistribution an und bereitet die Daten vor
void Modeller::DoPhaseDistribution(){
wxString filename = getFirstSourceFile();
if (filename != wxT("")){
wxBitmap* bmp = new wxBitmap(filename, wxBITMAP_TYPE_ANY);
pnlPhaseDistribution->setDisplayBMP(bmp); // Uebergibt das Bild, welches angezeigt werden soll
wxScrolledWindow* scrlWdw = pnlPhaseDistribution->getDisplay();
scrlWdw->SetScrollbars(10, 10, bmp->GetWidth()/10, bmp->GetHeight()/10);
} else {
wxMessageBox(wxT("No source files added"));
}
showPanel(PHASE_DISTRIBUTION);
}
Ich bin für jede Hilfe dankbar.