Qual è la HDC per in GetDIBits?
Domanda
usavo GetDIBits
per ottenere bitmap dati da un contesto di dispositivo compatibile schermo in un DIB di un certo formato. Ho avuto l'impressione che il DC necessari soltanto per sintetizzare un tavolo colore quando bitmap di origine è di 8 bit per pixel o meno. Dal momento che la mia fonte bitmap era un'immagine a colori a 32 bit e questo era un one-off del programma e non ho avuto la schermata DC a portata di mano, ho impostato il parametro HDC NULL. Questo non ha funzionato. Una volta ho afferrato la schermata DC e la passò a, lo ha fatto iniziare a lavorare.
Questo mi ha lasciato chiedendo perché GetDIBits
richiede il contesto di periferica. Che cosa è utilizzato per?
Soluzione
A:
int SetDIBits(
__in HDC hdc,
__in HBITMAP hbmp,
__in UINT uStartScan,
__in UINT cScanLines,
__in const VOID *lpvBits,
__in const BITMAPINFO *lpbmi,
__in UINT fuColorUse
);
Il secondo argomento è hbmp
bitmap dipendente periferica che verrà modificato utilizzando le informazioni colore dal dispositivo bitmap indipendente. Il hdc
è un handle al contesto di dispositivo da cui dipende il (dispositivo dipendente) bitmap. Quando la chiamata viene effettuata, Windows utilizza le informazioni da questo contesto di dispositivo per decidere come eseguire la trasformazione.