DrawBitmap auf bestimmte Fläche



  • Servus,

    ich will ein Bitmap pinseln. Gesagt getan. OnPaint Eventhandler angelegt, DC angelegt und dc.DrawBitmap(...) aufgerufen.

    Ooops das war wohl nichts.

    Ich möchte in einen bestimmten Bereich meines Fensters zeichnen. Ich habe also ein FEnster, dass mit Sizern unterteilt ist. In den oberen Abschnitt möchte ich zeichnen.

    Also habe ich mir in diesen Abschnitt ein wxPanel gelegt und wollte darauf pinseln. Das ging in die Hose. Anwendung hängt sich auf.

    Einmal habe ich OnPaint im Mainframe verwendet und einmal OnPoint dieses Panels. Beides ging schief.



  • Heut is echt nich mein Tag....

    ////@begin wxEVT_PAINT event handler for ID_SMSMAINFRAME in SMSMainframe.
        // Before editing this code, remove the block markers.
        wxPaintDC dc(this);
    ////@end wxEVT_PAINT event handler for ID_SMSMAINFRAME in SMSMainframe. 
    	if (m_nPanelLogoX != m_panLogo->GetSize().GetWidth() || m_nPanelLogoY != m_panLogo->GetSize().GetHeight())
    	{
    		m_nPanelLogoX =m_panLogo->GetSize().GetWidth();
    		m_nPanelLogoY =m_panLogo->GetSize().GetHeight();
    		int p_nwidth = floor(m_nPanelLogoX*0.6);
    		int p_nheight = floor(m_nPanelLogoY*0.6);
    		int p_nx = floor((m_nPanelLogoX-p_nwidth)*0.5); 
    		int p_ny =	floor((m_nPanelLogoY-p_nheight)*0.5);
    
    		wxClientDC dc2(m_panLogo);
    		wxBitmap p_bmpLogo(m_wximLogo.Scale(p_nwidth,p_nheight),dc2);
    		//wxBitmap p_bmpLogo(m_wximLogo,dc2);
    		dc2.DrawBitmap(p_bmpLogo,p_nx,p_ny);
    		//dc2.DrawBitmap(p_bmpLogo,100,50);
    	}
    

    Das wars schon.... Falsche OnPaint... Dadurch hat sichs aufgehängt.

    Ich verwende hier nun die OnPaint des MainWindows und Zeichne per CLientDC in das Panel. Käse gegessen.

    Jetzt noch flickerfrei und Attacke.


Anmelden zum Antworten