2009-10-20 6 views
0

Je rencontre des problèmes dans CE BltBit à partir d'un hdc compatible précédemment créé à l'appareil hdc.ImageList et BltBit - ting

Le code suivant fonctionne:

hdc = pdis->hDC; 
FillRect(hdc, &(pdis->rcItem), (HBRUSH)GetStockObject(BLACK_BRUSH)); 
ImageList_Draw(himl, imageIndex, hdc, 15 , 30, ILD_NORMAL); 

Cependant, le suivant dessine juste le rectangle noir et ne met pas l'image sur le dessus.

 hdc = pdis->hDC; 
     hdcmem = CreateCompatibleDC(hdc); 
     FillRect(hdc, &(pdis->rcItem), (HBRUSH)GetStockObject(BLACK_BRUSH)); 
     ImageList_Draw(himl, imageIndex, hdcmem, 0 , 0, ILD_NORMAL); 
     BitBlt(hdc, 15, 30, 130, 100, hdcmem, 0, 0, SRCCOPY); 

Toutes les idées sont les bienvenues.

Cordialement E

Répondre

3

CreateCompatibleDC ne fait pas ce que vous pensez. Depuis la page liée:

Avant qu'une application puisse utiliser un contexte de périphérique de mémoire pour des opérations de dessin, elle doit sélectionner une image bitmap de la largeur et de la hauteur correctes dans le contexte de périphérique. Cela peut être fait en utilisant CreateCompatibleBitmap pour spécifier la hauteur, la largeur et l'organisation des couleurs requises dans l'appel de fonction.

Les contextes de périphériques sont une abstraction. Il doit y avoir un stockage derrière eux - un écran ou, dans votre cas, un bitmap.

+0

Haha .. avakar vous avez tout à fait raison. Je vous remercie. Je pensais qu'il y avait un bloc de mémoire derrière un DC. Vous avez répondu à d'autres remarques que j'ai eues dans mon esprit. Merci encore. – EndsOfInvention