-
JNI : C et Java
Bonjour à tous,
Je travaille sur un projet d'ihm java (swing) et je dois utiliser un outil développé en C qui m'affiche des images. Je souhaite que ces images soient affichées dans une JFrame.
Pour cela je pense utiliser JNI pour faire des appels au code C.
Par contre je ne sais pas comment récupérer les images générées par l'outil et pouvoir les agrandir ou zoomer dessus via ma JFrame.
Est-ce que quelqu'un aurait un exemple d'utilisation ?
Merci d'avance.
Ben
-
Bonjour,
Ton outil , c'est un programme externe écrit en C ou du code auquel tu a accès ? Ce que je voudrais savoir c'est sous quel format tu a accès à l'image ?
edit : Je pense comprendre. En gros est ce que dans le code C tu aurais par exemple une fonction qui te renvoi l'image sous une forme quelconque ( à indiquer :) )
-
Bonjour,
Merci d'avoir répondu.
Effectivement j'utilise un outil développé en C, qui offre la possibilité via une api de récupérer l'image en question.
Mon programme est lui écrit en Java et pour pouvoir récupérer l'image j'ai créé une classe java qui "extends" la classe "Canvas".
j'utilise la methode "paint" de la classe "Canvas" comme une méthode native.
Mon image est un objet "Drawable" (X11).
Mon pb c'est que à chaque fois que je fais une action sur l'image (par exemple zoom ou agrandissement) la méthode paint est rappelé plusieurs fois et côté C le chargement de l'image se fait plusieurs fois. D'ou un clignotement de l'image.
Je cherche une méthode pour éviter ce clignotement (du genre double buffer), mais je n'ai pas réussit à l'implémenter. Je ne maîtrise pas très bien le C.
-
A mon avis tu ne devrais importer l'image qu'une seule fois. Tu créer par exemple un objet Image à partir de ce que tu récupère avec ton api C et ensuite avec la partie Java tu travaille uniquement avec cette objet. T'évite ensuite les appels à ton code C a chaque fois.
Concernant le double buffering voici des liens pour l'implémenter (JAVA)
http://java.developpez.com/faq/gui/?...oublebuffering
http://java.developpez.com/telecharg...ering-Hardware
http://java.developpez.com/telecharg...ering-software
-
merci pour ton aide je vais regarder les liens