dcmemory.h

Clase wxMemoryDC

Un contexto de dispositivo de memoria proporciona un medio para dibujar gráficos en un mapa de bits.

Jerarquía:

Jerarquía de la clase wxMemoryDC

Cuando se dibuja en un mapa de bits mono, el uso de wxWHITE, wxWHITE_PEN y wxWHITE_BRUSH dibujará el color de fondo (es decir, 0), mientras que todos los demás colores dibujarán el color de primer plano (es decir, 1).

Un mapa de bits debe ser seleccionado en la nueva memoria DC antes de que pueda ser utilizado para cualquier cosa. El uso típico es el siguiente:

// Crear un DC de memoria
wxMemoryDC temp_dc;
temp_dc.SelectObject(test_bitmap);
 
// Ahora podemos atraer a la memoria DC...
// Copiar de este DC a otro DC.
old_dc.Blit(250, 50, BITMAP_WIDTH, BITMAP_HEIGHT, temp_dc, 0, 0);

Hay que tener en cuenta que hay que borrar el DC de memoria (o seleccionar el mapa de bits fuera de él) antes de poder volver a seleccionar un mapa de bits en otro DC de memoria.

Y, antes de realizar cualquier otra operación en los datos del mapa de bits, el mapa de bits debe seleccionarse fuera del DC de memoria:

temp_dc.SelectObject(wxNullBitmap);

Esto ocurre automáticamente cuando el objeto wxMemoryDC sale del ámbito.

Hay que tener en cuenta que el factor de escala del mapa de bits determina el factor de escala utilizado por este contexto de dispositivo, por lo que cuando se utiliza un contexto de dispositivo de memoria como back buffer para una ventana, normalmente se debe crear el mapa de bits utilizando el mismo factor de escala que utiliza la ventana, por ejemplo:

void MyWindow::OnPaint(wxPaintEvent&)
{
    wxBitmap bmp;
    bmp.CreateWithDIPSize(GetClientSize(), GetDPIScaleFactor());
    {
        wxMemoryDC memdc(bmp);
        ... use memdc to draw on the bitmap ...
    }
 
    wxPaintDC dc(this);
    dc.DrawBitmap(bmp, wxPoint(0, 0));
}

Funciones miembro

wxMemoryDC()

wxMemoryDC::wxMemoryDC()

Construye un nuevo contexto de dispositivo de memoria.

Utilizar el miembro wxDC::IsOk() para comprobar si el constructor ha tenido éxito en la creación de un contexto de dispositivo utilizable. No olvidar seleccionar un mapa de bits en el DC antes de dibujar sobre él.

wxMemoryDC()

wxMemoryDC::wxMemoryDC(wxDC * dc)

Construye un nuevo contexto de dispositivo de memoria con las mismas características que el contexto de dispositivo existente dado.

Este constructor crea un contexto de dispositivo de memoria compatible con dc en wxMSW, el argumento se ignora en los otros ports. Si dc es NULL, se crea un contexto de dispositivo compatible con la pantalla, igual que con el constructor por defecto.

wxMemoryDC()

wxMemoryDC::wxMemoryDC(wxBitmap & bitmap)

Construye un nuevo contexto de dispositivo de memoria y llama a SelectObject() con el mapa de bits dado.

Utilice el miembro wxDC::IsOk() para comprobar si el constructor ha creado correctamente un contexto de dispositivo utilizable.

GetSelectedBitmap()

wxBitmap& wxMemoryDC::GetSelectedBitmap()

Obtiene el mapa de bits seleccionado.

GetSelectedBitmap()

const wxBitmap& wxMemoryDC::GetSelectedBitmap() const

Obtiene el mapa de bits seleccionado.

SelectObject()

void wxMemoryDC::SelectObject(wxBitmap & bitmap)

Permite utilizar este objeto de contexto de dispositivo para modificar el contenido del mapa de bits dado.

Hay que tener en cuenta que si solo necesita utilizar el contenido del mapa de bits existente en lugar de modificarlo, se debe utilizar SelectObjectAsSource() en su lugar.

Antes de utilizar los datos actualizados del mapa de bits, hay que asegurarse de seleccionarlos fuera de contexto seleccionando wxNullBitmap en el contexto del dispositivo o destruyendo el contexto del dispositivo por completo.

Si el mapa de bits ya está seleccionado en este contexto de dispositivo, no se hace nada. Si está seleccionado en otro contexto, la función lanza un assert y el dibujo sobre el mapa de bits no funcionará correctamente.

SelectObjectAsSource()

void wxMemoryDC::SelectObjectAsSource(const wxBitmap & bitmap)

Selecciona el mapa de bits dado en el contexto de dispositivo, para utilizarlo como mapa de bits de memoria.

Seleccionar el mapa de bits como fuente en un DC de memoria permite copiar su contenido a otro contexto de dispositivo utilizando wxDC::Blit(). Tenga en cuenta que utilizar wxDC::DrawBitmap() o wxDC::DrawIcon() es una forma más sencilla de hacer lo mismo.

Nota: Modificar un bitmap seleccionado solo como fuente puede no funcionar correctamente y puede modificar notablemente los otros bitmaps que comparten los mismos datos debido al uso del conteo de referencias (ver Reference Counting).

Si el argumento es wxNullBitmap (o algún otro wxBitmap no inicializado) el bitmap actual se selecciona fuera del contexto del dispositivo, lo que permite destruir el bitmap actual de forma segura.

Métodos y datos heredados

Esta clase hereda los métodos y datos miembro públicos y protegidos de wxObject y wxDC.