7
votes

GDI + dessine seulement monochrome sur mémoire DC

J'essaie de faire une double tampon dans une application MFC et d'essayer de dessiner sur la mémoire DC avec GDI +. Cependant, bien que j'ai appelé CreateCompatibedc (), je ne reçois qu'une image monochrome. Voici le code:

CDC bufferDC;
CBitmap bufferBitmap;
bufferDC.CreateCompatibleDC(&dc);
bufferBitmap.CreateCompatibleBitmap(&bufferDC, 300, 300);
bufferDC.SelectObject(bufferBitmap);
Graphics g(bufferDC);
g.Clear(Color::Green);
dc.BitBlt(0, 0, 300, 300, &bufferDC, 0, 0, SRCCOPY);


0 commentaires

3 Réponses :


1
votes

Le bitnmap et le bufferdc doivent être compatibles avec dc (quel que soit le périphérique qu'il fait référence), pas le bitmap compatible ... avec son propre dc.

Essayez de donner & dc à CreateCopMpatisibleBitmap .


0 commentaires

0
votes

Votre code de code ne montre pas où la variable dc provient de. Ce gars contient probablement un bitmap monochrome, la valeur par défaut. Vous n'en avez pas besoin de toute façon. Au lieu de cela, passez null à CreateCompatibedc et ce sera le même format que votre affichage, qui est probablement couleur.


0 commentaires

13
votes

une erreur commune. Une mémoire DC prend les propriétés du bitmap sélectionnées, peu importe la compatibilité avec laquelle il a été créé. Le bitmap par défaut sélectionné dans un CC est monochrome. Si vous créez un bitmap compatible avec ce DC, ce sera également monochrome.

Créer le bitmap pour être compatible avec l'original DC, pas la mémoire DC.


0 commentaires