Fórum BUG de transparência no Image #206314
14/01/2004
Ao colocar uma imagem em um componente Image que tenha uma parte transparente e habilitando a propriedade transparent do componente, dependendo de onde estaja a região transparente, pode simplesmente não funcionar. Se tiver apenas uma região transparente na parte de cima da figura ou do lado direito, não funciona a transparência.
Faça a teste: vá no photoshop e crie um quadrado com o fundo transparente, preencha com alguma cor do meio do quadrado para cima, e salve como jpg. Coloque em um componente Image e habilite a propriedade transparent, funciona normal. Mas agora faça uma outra figura preenchendo do meio para baixo, a transparência não vai funcionar.
Alguém sabe como contornar este problema?
Posts
A transparência do TImage, não é a mesma do PhotoShop, mesmo porque formatos como JPG e BMP não possuem transparência (abra seu arquivo no PhotoShop novamente e verifque). A trasnparência do TImage funciona pois o componente simplesmente remove a cor do pixel do canto superior esquerdo da imagem. Para contornar esta situação use um formato que suporte transparência, como GIF ou PNG (em um componente adequado).
Não concordo tanto com a sua defesa do componente image, pois acho que este componente consegue fazer bem a transparência quando nõ é em forma degradê. Mas acho que este problema que citei é realmente um bug. Basta fazer os testes que falei, para ver que não à razão nenhuma para dar certo quando a transparência está em baixo e não dar certo quando está em cima.
Queria uma solução, se não com o componente Image, msa pelo menos com um componente padrão do delphi 6.
Com certeza não é um bug, já que BMPs nada sabem sobre transparência.
O TImage simula isso, mas precisa atender à certas condições, como dito pelo cebikyn.
Uma maneira de burlar o sistema de tranparência do TImage seria mudar TransparentColor do bitmap para a cor que você deseja que seja transparente, em tempo de execução.