Pregunta

Estoy usando el siguiente código para crear un DC compatible:

m_pDC=new CDC();
VERIFY(m_pDC->CreateCompatibleDC(sampleDC);
CBitmap bitmap; 
if (bitmap.CreateCompatibleBitmap(sampleDC, rect.Width(), rect.Height()))
{
   m_pOldBitmap = m_pDC->SelectObject(&bitmap);
}

Mi pregunta es ¿CDC CBitmap ocupa memoria? Si está utilizando memoria, ¿por qué obtiene malos resultados cuando rect.width y rect.height son grandes? (Hay suficiente memoria). Alguien dijo que está usando memoria en la tarjeta de video. Es verdad. No estoy muy seguro de eso.

¿Fue útil?

Solución

La memoria en CreateCompatibleBitmap se asigna desde un grupo de todo el sistema que es normalmente limitado a aproximadamente 200 Megabytes en versiones de Windows de 32 bits.

Desde WinNT4.0 CreateBitmap () API asigna el mapa de bits en la memoria paginada en modo kernel . En WinNT4 era imposible crear mapas de bits de más de 48 MB.

¿Cuál era su límite?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top