Clase wxBufferedDC
Esta clase proporciona una forma sencilla de evitar el parpadeo: cuando se dibuja en ella, todo se dibuja primero en un buffer en memoria (un wxBitmap) y luego se copia a la pantalla, utilizando el wxDC asociado, sólo una vez, cuando este objeto se destruye.
Jerarquía:

wxBufferedDC está típicamente asociado con wxClientDC, si se quiere usarlo en un manejador EVT_PAINT, se debería mirar wxBufferedPaintDC en su lugar.
Cuando se utiliza de esta manera, se debe especificar un DC válido en el constructor, mientras que el mapa de bits del buffer no tiene que ser proporcionado explícitamente, por defecto esta clase asignará el mapa de bits del tamaño requerido por sí misma. Sin embargo el uso de un bitmap dedicado puede acelerar el proceso de redibujado eliminando la creación y destrucción repetida de un bitmap posiblemente grande. Por lo demás, wxBufferedDC puede utilizarse de la misma forma que cualquier otro contexto de dispositivo.
Otro posible uso de wxBufferedDC es utilizarlo para mantener un almacén de respaldo para el contenido de la ventana. En este caso, el DC asociado puede ser nullptr pero debe especificarse un mapa de bits válido para el almacén de respaldo.
Por último, ten en cuenta que tanto GTK+ 2.0 como macOS proporcionan doble búfer de forma nativa. Se puede usar wxWindow::IsDoubleBuffered() para determinar si se necesita usar buffer o no, o usar wxAutoBufferedPaintDC para evitar el doble buffer innecesario en los sistemas que ya lo hacen automáticamente.
Funciones miembro
wxBufferedDC()
wxBufferedDC::wxBufferedDC()
Constructor por defecto.
Se debe llamar a uno de los métodos Init() más tarde para poder utilizar el contexto del dispositivo.
wxBufferedDC()
Crea un buffer para el dc proporcionado.
No se debe llamar a Init() cuando se utiliza este constructor.
Parámetros
- dc
- El DC subyacente: todo lo dibujado a este objeto será vaciado a este DC cuando este objeto sea destruido. Puede pasar nullptr para inicializar el buffer y no vaciarlo.
- area
- El tamaño del mapa de bits que se utilizará para el búfer (este mapa de bits se crea internamente cuando no se indica explícitamente).
- style
- wxBUFFER_CLIENT_AREA para indicar que sólo el área cliente de la ventana es almacenada en el buffer, o wxBUFFER_VIRTUAL_AREA para indicar que el bitmap del buffer cubre el área virtual.
wxBufferedDC()
wxBufferedDC::wxBufferedDC( wxDC * dc, wxBitmap & buffer = wxNullBitmap, int style = wxBUFFER_CLIENT_AREA )
Crea un buffer para el dc proporcionado.
No se debe llamar a Init() cuando se utiliza este constructor.
Parámetros
- dc
- El DC subyacente: todo lo dibujado a este objeto será vaciado a este DC cuando este objeto sea destruido. Puede pasar nullptr para inicializar el buffer y no vaciarlo.
- buffer
- Mapa de bits proporcionado explícitamente para ser utilizado como búfer: esta es la solución más eficiente ya que el mapa de bits no tiene que ser recreado cada vez, pero también requiere más memoria ya que el mapa de bits nunca se libera. El mapa de bits debe tener un tamaño apropiado, cualquier cosa que se dibuje fuera de sus límites se recorta.
- style
- wxBUFFER_CLIENT_AREA para indicar que sólo el área cliente de la ventana es almacenada en el buffer, o wxBUFFER_VIRTUAL_AREA para indicar que el bitmap del buffer cubre el área virtual.
~wxBufferedDC()
virtual wxBufferedDC::~wxBufferedDC()
Copia todo lo dibujado en el DC hasta el momento al DC subyacente asociado a este objeto, si existe.
GetStyle()
int wxBufferedDC::GetStyle() const
Consigue el estilo.
Init()
Inicializa el objeto creado usando el constructor por defecto.
Consultar los constructores para conocer los detalles de los parámetros.
Init()
void wxBufferedDC::Init( wxDC * dc, wxBitmap & buffer = wxNullBitmap, int style = wxBUFFER_CLIENT_AREA )
Inicializa el objeto creado usando el constructor por defecto.
Consultar los constructores para conocer los detalles de los parámetros.
SetStyle()
void wxBufferedDC::SetStyle(int style)
Establece el estilo.
UnMask()
void wxBufferedDC::UnMask()
Mezcla el buffer con el dc, y separa el dc del buffer (para que pueda ser usado una sola vez).
Por lo general, sólo se llama en el destructor o por el destructor de las clases derivadas si el BufferedDC debe blit antes de que la clase derivada (que puede poseer el dc que se está bliteando) se destruye.
Métodos y datos heredados
Esta clase hereda los métodos y datos miembro públicos y protegidos de wxMemoryDC, wxDC, wxReadOnlyDC y wxObject.