BUG de transparência no Image

Delphi

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?


Raserafim

Raserafim

Curtidas 0

Respostas

Cebikyn

Cebikyn

14/01/2004

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).


GOSTEI 0
Raserafim

Raserafim

14/01/2004

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.


GOSTEI 0
Beppe

Beppe

14/01/2004

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.


GOSTEI 0
POSTAR