Clase wxPaintEvent
Un evento paint se envía cuando el contenido de una ventana necesita ser repintado.
Jerarquía:

El controlador de este evento debe crear un objeto wxPaintDC y utilizarlo para pintar el contenido de la ventana. Por ejemplo:
void MyWindow::OnPaint(wxPaintEvent& event) { wxPaintDC dc(this); DrawMyDocument(dc); }
Hay que tener en cuenta que no se deben crear otros tipos de wxDC (por ejemplo wxClientDC o wxWindowDC) en los manejadores EVT_PAINT y tampoco se deben crear wxPaintDC fuera de estos manejadores de eventos.
Se puede optimizar el pintado recuperando los rectángulos que han sido dañados y repintando sólo éstos. Los rectángulos están en términos del área del cliente, y no están desplazados, por lo que se necesitará hacer algunos cálculos usando la posición actual de la vista para obtener unidades lógicas desplazadas. Aquí hay un ejemplo de uso de la clase wxRegionIterator:
// Called when window needs to be repainted. void MyWindow::OnPaint(wxPaintEvent& event) { wxPaintDC dc(this); // Find Out where the window is scrolled to int vbX,vbY; // Top left corner of client GetViewStart(&vbX,&vbY); int vX,vY,vW,vH; // Dimensions of client area in pixels wxRegionIterator upd(GetUpdateRegion()); // get the update rect list while (upd) { vX = upd.GetX(); vY = upd.GetY(); vW = upd.GetW(); vH = upd.GetH(); // Alternatively we can do this: // wxRect rect(upd.GetRect()); // Repaint this rectangle ...some code... upd ++ ; } }
Observaciones
Hay que tener en cuenta que, en general, es imposible cambiar el dibujo de un control estándar (como wxButton) y por lo tanto no se debe tratar de manejar eventos de pintura para ellos, ya que incluso si puede funcionar en algunas plataformas, esto es inherentemente no portable y no funcionará en todas partes.
Eventos que usan esta clase
Las siguientes macros de manejadores de eventos redirigen los eventos a manejadores de funciones miembro 'func' con prototipos como:
void handlerFuncName(wxPaintEvent& event)
Macros de eventos:
- EVT_PAINT(func)
- Procesa un evento wxEVT_PAINT.
Funciones miembro
wxPaintEvent()
wxPaintEvent::wxPaintEvent(wxWindow * window)
Constructor de uso exclusivo de la propia wxWidgets.
Hay que tener en cuenta que los objetos de esta clase no pueden ser creados desde código de aplicación, sólo son creados por la propia librería. Si se necesita que una ventana sea repintada, usar wxWindow::Refresh() en lugar de intentar crear manualmente un evento de esta clase.
Métodos y datos heredados
Esta clase hereda los métodos y datos miembro públicos y protegidos de wxEvent y wxObject.