2009-06-18 5 views
0

Je ne peux pas dessiner un motif avec un arrière-plan transparent. Ceci est mon extrait:Comment puis-je dessiner un patternBrush avec un fond transparent (GDI)?

bitmap.CreateBitmap(8, 8, 1, 1, &bits) 
brush.CreatePatternBrush(&bitmap) 
hbrush = pCgrCurrentDC->SelectObject(&brush); 
// set text color 
TextCol = pCgrCurrentDC->SetTextColor(CgrColourPalRGB); 
int oldBkgrdMode = pCgrCurrentDC->SetBkMode(TRANSPARENT); 
//draw polygon 
pCgrCurrentDC->Polygon(CgrBuffer, n); 

Le doc sur msdn ne mentionne rien au sujet de la transparence. Je suppose que ce mode pourrait être utilisé? Ou est-ce un bug?

Merci!

Répondre

1

Le mode TRANSPARENT signifie que l'arrière-plan ne sera pas rempli avant que votre pinceau ne soit dessiné. Mais votre pinceau ne contient aucun pixel transparent et il redessine les pixels d'arrière-plan de toute façon. Quatrième argument dans CreateBitmap a été défini sur 1 dans votre échantillon. Cela signifie que bitmap est monochrome.

Vous devez utiliser un bitmap 32 bits pour utiliser la transparence dans les pinceaux. GDI prend en charge la transparence avec certaines limites. Utilisez GDI + pour un support de transparence complet.