Como posso desenhar um padrão de escova com fundo transparente (GDI)?
Pergunta
Eu não posso desenhar um padrão com um fundo transparente. Este é o meu trecho:
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);
O doc sobre MSDN doesn' t mencionou nada sobre a transparência. Eu acho que este modo pode ser usado? Ou este é um bug?
Obrigado!
Solução
Modo meios TRANSPARENT
esse fundo não serão preenchidos antes de seu pincel é desenhado. Mas sua escova não contém quaisquer pixels transparentes nele e ele redesenha pixels fundo de qualquer maneira. Quarto argumento em CreateBitmap
foi definido como 1 na sua amostra. Isso significa bitmap é monocromático.
Você precisa usar bitmap de 32 bits para usar transparência nas escovas. GDI suporta transparência com alguns limites. Use GDI + para suporte total transparência.
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow