Domanda

Come relativamente nuovo MFC, vedo contesti di periferica (DC) un sacco. Ho vagamente capire che si tratta di qualcosa a che fare con il disegno, ma le specifiche non sono molto ben spiegato da nessuna parte che posso trovare. Che cosa significa la creazione di un "Device Context compatibile" media, e perché è importante? Cosa fa SelezionaOggetto fare e come devo fare un DC compatibili prima?

È stato utile?

Soluzione

un contesto di periferica è solo un luogo che si verifica il disegno, quindi se si hanno due diversi CC, si sta disegnando in due luoghi diversi. Un po 'come un handle di file.

Contesti dispositivo può fare riferimento a immobiliare sullo schermo, o in bitmap che proprio risiedere in memoria, e probabilmente in altri luoghi, anche, questi sono solo i due mi viene in mente in questo momento.

contesti compatibili sono quelli che hanno la stessa organizzazione pixel sottostante, con cui si intende il numero di bit per pixel, byte per pixel, organizzazione colore e così via. Memoria bitmap contesti di periferica possono avere qualsiasi organizzazione che si desidera, ma i vostri contesti schermo stanno per essere correlato (eventualmente) per i buffer sulla scheda grafica, che (a seconda della modalità, ecc) hanno un'organizzazione molto specifico pixel.

Avere contesti compatibili significa che la sua efficace per trasferire i dati delle immagini tra di loro, perché è richiesto poca o nessuna traduzione dei dati. All'altro estremo, se si dispone di una tavolozza di 256 colori, 8 bit mappa e si tenta di blit ad uno schermo che ha 8 bit ciascuno di RGBA per pixel, ogni ultimo pixel richiederà significativo massaggio come viene copiato e quindi la copia incompatibili bitmap è molto molto più lento. Secondo la documentazione di Win32 SDK, almeno BitBlt () e StretchBlt () "convertire il formato di colore di origine in base al formato di destinazione", in modo che possa essere fatto.

Indagare CreateCompatibleDC () e CreateCompatibleBitmap () come punti di partenza per come creare contesti di disegno che sono compatibili con quelli già esistenti.

SelectObject () controlli che le risorse attualmente attivi all'interno del contesto di dispositivo. Un contesto ha una corrente di penna, pennello, font e bitmap. Questi fanno un sacco di altra GDI chiama più semplice, consentendo di specifiy meno parametri. Per esempio, non è necessario specificare il tipo di carattere quando si utilizza TextOut (), ma se si desidera cambiare il tipo di carattere, è lì che SelectObject () entra in gioco. Se alimenti SelectObject () una maniglia per un tipo di carattere, il ritorno valore è un handle al font che era in vigore, e le operazioni successive utilizzare il nuovo carattere. Il comportamento è lo stesso per gli altri tipi di risorse, penne, pennelli, ecc.

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