Fest Posted March 12, 2012 Report Share Posted March 12, 2012 Olá pessoal, estou com um pequeno problema em mãos. Ando a fazer umas coisas para aprender e por diversão e de momento preciso de mostrar uma série de gifs. Eu tenho uma lista e conforme o item seleccionado aparece um gif diferente. Eu estou a apresentar o gif num JLabel no parâmetro setIcon através de um ImageIcon. Acontece que, na maioria dos gifs, o fundo que supostamente é transparente, vem colorido. Eu de um jogo que tinha feito lembrei-me que secalhar tinha de implementar doublebuffering, andei a pesquisar, implementei um código e outro e outro e nada, o problema está sempre presente. Eu mostro o meu problema numa versão mais simples para ser mais fácil de rever. import java.awt.Graphics; import java.awt.Image; import javax.swing.*; public class windowteste extends JFrame{ private Image dbImage; private Graphics dbg; public windowteste(){ setTitle("Teste v0.0"); setExtendedState(this.getExtendedState()|JFrame.MAXIMIZED_BOTH); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); JPanel p = new JPanel(); JLabel l =new JLabel(); l.setIcon(new ImageIcon("imagens/pokemon/sprites/animated/6.gif")); p.add(l); add(p); invalidate(); validate(); } public static void main(String[] args) { new windowteste(); } public void update(Graphics g) { // initialize buffer if (dbImage == null) { dbImage = createImage (this.getSize().width, this.getSize().height); dbg = dbImage.getGraphics (); } // clear screen in background dbg.setColor (getBackground ()); dbg.fillRect (0, 0, this.getSize().width, this.getSize().height); // draw elements in background dbg.setColor (getForeground()); paint (dbg); // draw image on the screen g.drawImage (dbImage, 0, 0, this); } } Eu ainda pensei se o problema estaria nos gifs, mas uma vez que não acontece tal coisa quando os abro num browser, retirei essa ideia. Se alguém quiser o gif que apresento nesse código exemplo que me diga como posso colocá-lo aqui se faz favor. Obrigado, Fest. Link to comment Share on other sites More sharing options...
xDarkLink Posted March 12, 2012 Report Share Posted March 12, 2012 Tens a certeza que o gif não tem background? manda um gif que eu faço aqui num class minha e testo 😉 Abraço Link to comment Share on other sites More sharing options...
Fest Posted March 12, 2012 Author Report Share Posted March 12, 2012 Aqui está a dar certo, o fundo não aparece colorido e a mudar 😉 Link to comment Share on other sites More sharing options...
xDarkLink Posted March 12, 2012 Report Share Posted March 12, 2012 Pois de facto isso não é assim tão simples, eu tenho algumas coisas por fazer, não tenho tempo de explorar isso a fundo, mas com o código que fiz aparece sempre uns quadrados por trás a mudar de cor.. Mas olha para aqui e explora isto: http://stackoverflow.com/questions/5183570/java-background-transparent Talvez chegues lá, desculpa não poder ajudar muito mais. Abraço, boa sorte Link to comment Share on other sites More sharing options...
Fest Posted March 13, 2012 Author Report Share Posted March 13, 2012 Olá xDarkLink, obrigado por responderes, pelo menos deste uma vista de olhos e tentaste. Estive a ver o que me mandaste e não consegui grandes resultados, apenas obtive imagens mas com o fundo colorido 😄 ando mesmo à nora com isto. Mesmo assim agradeço pelo tempo. Se alguém conseguir perceber o porquê, por favor diga-me. Obrigado, Fest. Link to comment Share on other sites More sharing options...
xDarkLink Posted March 14, 2012 Report Share Posted March 14, 2012 Boas fest hoje deu tempo para ver isto com mais calma, postei no SO ajuda e já achei solução, acharam por mim mas pronto, resulta. Eu acho que isso é um .gif mal "codificado" ou assim, porque normalmente não surge este tipo de problemas.. Mas pronto assumindo que nao dá para codificar melhor, a solução é esta: http://stackoverflow.com/questions/9699197/java-gif-on-label-background-squares-showing explora a resposta do "eee" boa sorte Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now