Utilizando transparência em bitmaps
Dados do artigo
É possível utilizar transparência através do uso de máscaras (Masks), permitindo escolher qual região do bitmap você deseja exibir na tela. Na verdade você escolhe quais pixels não deseja exibir sendo eles correspodentes as cores preta ou branca.
Veja um exemplo:
O uso é simples, você utiliza o bitmap a ser exibido e a sua máscara, na máscara é definida a região que não será exibida na tela (no exemplo acima a região preta mas como mencionado antes pode-se definir a cor branca como inválida).
A função responsável por exibir o bitmap já com sua máscara é a CBitmapContext::BitBltMasked().
Exemplo encontrado nos documentos sdk do Symbian:
//Carrega o bitmap máscara , como qualquer outro bitmap
CFbsBitmap* maskBitmap = new (ELeave) CFbsBitmap();
CleanupStack::PushL(maskBitmap);
User::LeaveIfError(maskBitmap->
Load(multiBitmapFile,EMbmGrbmap2Smilmask));
// Cálcula o retângulo da área onde será utilizada a máscara
TRect bmpPieceRect(TPoint(0,0),bitmap->SizeInPixels());
// Exibe na tela utilizando máscara e sem inversão
gc.BitBltMasked(TPoint(50,50),bitmap,bmpPieceRect,maskBitmap,EFalse);
...
// Limpa da memória
CleanupStack::PopAndDestroy();
Veja o termo "inversão" , caso o último argumento seja definido como ETrue os pixels em branco é que não serão exibidos.


(no comments yet)