[wxWidgets] - dodawanie tla z pliku

0

Witam,
Stworzyłem sobie klasę zakładkę i chcę by miała ona niestandardowe tło, czyli bitmapę.

Oto fragment kodu:

TLUMACZ_Z_KLAWIATURY::TLUMACZ_Z_KLAWIATURY( wxNotebook *Rodzic, const wxString &nazwa )
{
  //Tworzymy zakładkę
  Panel = new wxPanel( Rodzic, wxID_ANY );
  Rodzic -> AddPage( Panel , nazwa );

   //Ustawiamy tlo
  wxBitmap Tlo( "Tlo", wxBITMAP_TYPE_BMP );
  wxStaticBitmap *Cale_okno = new wxStaticBitmap( Panel, -1, Tlo ); //Unused Variable 'Cale_okno'

  //------------  Tworzymy kontrolki  ------------------
  wxFont Czcionka( 10, wxDEFAULT, wxNORMAL, wxBOLD );
  wxStaticText *tekst = new wxStaticText( Panel, -1, "Tu Pisz:", wxPoint(10,24) );
  tekst -> SetFont ( Czcionka );

  PoleTekstowe = new wxTextCtrl( Panel, wxID_ANY, "", wxPoint(10,40), wxSize(665, 200),
                                 wxTE_MULTILINE );

  Czy_Oddzielac = new wxCheckBox( Panel, wxID_ANY, "Czy oddzielac zdania spacjami?",
                                 wxPoint(10, 300) );

  Czy_Oddzielac -> SetValue(true);

  Start = new wxButton( Panel, ID_START, "Tłumacz...", wxPoint(580,500) );

  //-------- Łączymy kontrolki z funkcjami --------
  Panel -> Connect( ID_START, wxEVT_COMMAND_BUTTON_CLICKED,
                    wxCommandEventHandler(TLUMACZ_Z_KLAWIATURY::START), NULL, this );
}

Niestety tło pozostaje niezmienione.

Proszę o pomoc.

0

Proszę o Pomoc :-(

0

A sprawdziłeś, czy Tlo w ogóle załadowało się z pliku? No i czy bitmapa spełnia kryteria podane w manualu:

In particular, under Windows 9x the size of bitmap is limited to 64*64 pixels

0

Panel z tłem obrazkowym można uzyskać tworząc nową klasę:

class ImgPanel : public wxPanel
{
    DECLARE_EVENT_TABLE();
	public:
        wxBitmap bitmap;
		ImgPanel();
		ImgPanel(wxWindow* parent, wxWindowID id = wxID_ANY, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxDefaultSize, long style = wxTAB_TRAVERSAL, const wxString& name = "panel");
		~ImgPanel();
void OnPaint(wxPaintEvent& evt);
};

W liście inicjalizacyjnej wywołuje konstruktor rodzica i otwieram plik z bitmapą. Plik ma być tam, gdzie jest exe programu, a nie pliki *.h i *.cpp.

ImgPanel::ImgPanel(wxWindow* parent, wxWindowID id, const wxPoint& pos, const wxSize& size, long style, const wxString& name):
wxPanel(parent, id, pos, size, style, name), bitmap("baner_l.bmp", wxBITMAP_TYPE_BMP)
    {

}

W pliku z implementacją definiuję w tabeli zdarzeń funkcję odpowiedzi na zdarzenia OnPaint

BEGIN_EVENT_TABLE(ImgPanel,wxPanel)
	EVT_PAINT(ImgPanel::OnPaint)
END_EVENT_TABLE()

Sama metoda będzie wyglądać tak:

void ImgPanel::OnPaint(wxPaintEvent& evt){
//wxBitmap bitmap("baner_l.bmp", wxBITMAP_TYPE_BMP);
	if(bitmap.IsOk()){
	wxPaintDC dc(this);
	dc.BeginDrawing();
	dc.DrawBitmap(bitmap, 0, 0, false);
	dc.EndDrawing();
}
}

1 użytkowników online, w tym zalogowanych: 0, gości: 1