2017-07-18 7 views
-1

Je travaille en Java et j'essaie de montrer une image, passée du noir.Fondu d'une image en noir

Actuellement j'ai deux images empilées les unes sur les autres: L'image que je veux montrer et une image noire qui est la taille du JFrame que je diminue graduellement l'alpha de avec une boucle.

Cette manière n'est pas esthétique et est difficile à modifier. Y at-il un moyen intégré en Java pour obtenir cet effet et peut-être avoir plus de contrôle sur est montré?

+1

Pour de meilleures réponses 1) nous montrer comment vous faites actuellement ce, en utilisant une image provenant de sources en ligne, l'affichage [mcve] code avec votre question, et 2) explique en détail comment le comportement de votre code actuel ne fonctionne pas bien pour vous. –

+0

[C'est un exemple] (https://stackoverflow.com/questions/20346661/java-fade-in-and-out-of-images/20347600#20347600) - Alors qu'il est fondu, le principe de base reste – MadProgrammer

Répondre

0

RescaleOp est votre ami, vous pouvez essayer quelque chose comme, pas sûr de valeur de décalage

while (scale <0.8){ 
    float scale = 0.2f; 
    float offset = 15f; 
    RescaleOp rescaleOp = new RescaleOp(scale, offset, null); 
    rescaleOp.filter(imageOriginal, imageDark); 
    scale = scale+0.2; 
    some code for paint and delay 
} 
at last paint imageOriginal 
+4

while loop car cela risque de geler la boucle d'événement de l'interface graphique. C'est Swing et il devrait donc utiliser un SwingTimer. –

+0

Il y a plusieurs façons, le plus utilisable, à mon avis, est d'avoir un thread séparé pour redimensionner, qui appelle invokelater pour repeindre - cela vous permet de calculer une nouvelle image et dessiner déjà en une seule fois, mais vous pouvez à tout moment changer invokeandwait si vous avez besoin de synchroniser votre temps de traitement avec le temps de dessin pour, par exemple, réduire l'utilisation de la mémoire (1 tampon au lieu de 2). Quoi qu'il en soit, c'est son choix de gérer les tâches dans les threads, rescaleop est juste un moyen de disparaître à l'intérieur :-) –