Domanda

Sto usando il seguente codice per creare un controller di dominio compatibile:

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);
}

La mia domanda è: la memoria occupata da CDC CBitmap? Se sta usando la memoria, perché ottiene cattivi risultati quando rect.width e rect.height sono grandi. (C'è memoria sufficiente). Qualcuno ha detto che sta usando la memoria sulla scheda video. È vero. Non ne sono molto sicuro.

È stato utile?

Soluzione

La memoria in CreateCompatibleBitmap è allocata da un pool di sistema che è in genere limitato a circa 200 Megabyte su versioni a 32 bit di Windows.

Da WinNT4.0 l'API CreateBitmap () alloca la bitmap nella memoria paginata in modalità kernel . In WinNT4 era impossibile creare bitmap superiori a 48 MB.

Qual era il tuo limite?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top