Contesti del dispositivo di memoria
Per consentire alle applicazioni di inserire l'output in memoria anziché inviarlo a un dispositivo effettivo, usare un contesto di dispositivo speciale per le operazioni bitmap denominate contesto del dispositivo di memoria. Un controller di dominio di memoria consente al sistema di considerare una parte di memoria come dispositivo virtuale. Si tratta di una matrice di bit in memoria che un'applicazione può usare temporaneamente per archiviare i dati di colore per le bitmap create in una normale superficie di disegno. Poiché la bitmap è compatibile con il dispositivo, un controller di dominio di memoria viene talvolta definito anche un contesto di dispositivo compatibile.
Il controller di dominio di memoria archivia immagini bitmap per un determinato dispositivo. Un'applicazione può creare un controller di dominio di memoria chiamando la funzione CreateCompatibleDC .
La bitmap originale in un controller di dominio di memoria è semplicemente un segnaposto. Le sue dimensioni sono un pixel di un pixel. Prima che un'applicazione possa iniziare a disegno, deve selezionare una bitmap con la larghezza e l'altezza appropriati nel controller di dominio chiamando la funzione SelectObject . Per creare una bitmap delle dimensioni appropriate, usare la funzione CreateBitmap, CreateBitmapIndirect o CreateCompatibleBitmap. Dopo aver selezionato la bitmap nel controller di dominio di memoria, il sistema sostituisce la matrice a bit singolo con una matrice abbastanza grande per archiviare le informazioni sul colore per il rettangolo specificato di pixel.
Quando un'applicazione passa l'handle restituito da CreateCompatibleDC a una delle funzioni di disegno, l'output richiesto non viene visualizzato nell'area di disegno di un dispositivo. Il sistema archivia invece le informazioni sul colore per la linea risultante, la curva, il testo o l'area nella matrice di bit. L'applicazione può copiare l'immagine archiviata in memoria in una superficie di disegno chiamando la funzione BitBlt , identificando il controller di dominio di memoria come contesto del dispositivo di origine e una finestra o un controller di dominio dello schermo come contesto del dispositivo di destinazione.
Quando si visualizza un DIB o un DDB creato da un DIB in un dispositivo tavolozza, è possibile migliorare la velocità in base alla quale l'immagine viene disegnata disponendo la tavolozza logica per corrispondere al layout della tavolozza di sistema. A tale scopo, chiamare GetDeviceCaps con il valore NUMRESERVED per ottenere il numero di colori riservati nel sistema. Chiamare quindi GetSystemPaletteEntries e compilare le voci prima e l'ultima NUMRESERVED/2 della tavolozza logica con i colori di sistema corrispondenti. Ad esempio, se NUMRESERVED è 20, si compilano le prime e le ultime 10 voci della tavolozza logica con i colori del sistema. Compilare quindi i colori rimanenti 256-NUMRESERVED della tavolozza logica (nel nostro esempio, i restanti 236 colori) con colori da DIB e impostare il flag di PC_NOCOLLAPSE su ognuno di questi colori.
Per altre informazioni sui colori e sulle tavolozze, vedere Colori. Per altre informazioni sulle bitmap e sulle operazioni bitmap, vedere Bitmap.