IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

2D Java Discussion :

Delimiter zone cliquable sur image


Sujet :

2D Java

  1. #1
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 136
    Points : 64
    Points
    64
    Par défaut Delimiter zone cliquable sur image
    Bonjour,

    Je suis entrain de developper une application en java / swing et l'element principal de cette application est une image en jpg. Le clic sur cet image entraine l'ouverture d'une Jframe.
    Seulement voila, cette image est composée d'une piece, et de tout autour d'un espace blanc, inutile. J'aimerai que la Jframe s'ouvre seulement si on clique sur cette piece, pas sur l'integralitée de l'image. Je pensais donc delimiter des zones de coordonnées, ou le clique ne provoque pas l'ouverture de la jframe. Mais c'est pièce n'etant pas des formes geometriques simples, je me suis dis que ca ne serait pas evident.
    Quelqu'un aurait il une autre solution ?

    Merci d'avance

  2. #2
    Modérateur
    Avatar de dinobogan
    Homme Profil pro
    ingénieur
    Inscrit en
    Juin 2007
    Messages
    4 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France

    Informations professionnelles :
    Activité : ingénieur
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 4 073
    Points : 7 163
    Points
    7 163
    Par défaut
    Un moyen simple à utiliser mais pas toujours facile/rapide à mettre en place : tu prétraite l'image une fois pour toute via ton logiciel de dessin préféré, puis au runtime, tu analyses le pixel sur lequel on a cliqué.
    Par exemple, si le cadre extérieur est blanc pur (255,255,255), alors modifie tous les autres pixels de l'image blanc pur en blanc moins pur (254,255,255) par exemple. Ainsi, lorsque le pixel est blanc pur, tu es sûr que c'est le cadre et que ce n'est pas la zone cliquable. Et visuellement, ces petites modifications seront invisibles.
    Le seul petit soucis, c'est qu'il faut utiliser un format lossless, donc exit le JPG.

  3. #3
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 136
    Points : 64
    Points
    64
    Par défaut
    Merci beaucoup pour ta réponse, je vais y reflechir ! Merci encore

  4. #4
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 136
    Points : 64
    Points
    64
    Par défaut
    Je ne trouve pas la methode pour recuperer la couleur du pixel sur lequel j'ai cliqué. Tu ne l'aurais pas en tete par hasard ?

  5. #5
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 136
    Points : 64
    Points
    64
    Par défaut
    Suffisait de chercher un peu plus en fait, je pense que je trouverai mon bonheur ici :
    http://java.sun.com/j2se/1.5.0/docs/...lor(int,%20int)


    J'ai donc mis un Robot en place de la maniere suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    	public void mouseClicked(final java.awt.event.MouseEvent e) {
    				new SwingWorker() {
    					public Object construct() {
    						Robot robot = null;
    						try {
    							robot = new Robot();
    						} catch (AWTException e1) {
     
    							e1.printStackTrace();
    						}
    						Color color = robot.getPixelColor(e.getX(), e.getY());
    						System.out.println("Color of the point : " + color.toString());
    						return null;						
    						}
    				}.start();
    En fait je pourrai me permettre d'eliminer toutes les parties blanches de mon image. Mais quand je clique sur des zones qui paraissent blanches, j'ai des resultats differents :
    Color of the point : java.awt.Color[r=253,g=253,b=253]
    Color of the point : java.awt.Color[r=254,g=254,b=254]
    Color of the point : java.awt.Color[r=182,g=182,b=182]

    Est-ce que c'est justement du au fait que le jpg n'est pas loseless ? Ou y a-til peut-etre un moyen de ne plus en prendre en compte tous les pixels blanc, sans passer par un changement de format (qui ne m'arrange pas, mais je m y resignerait si il n'y a pas d'autre solution )?

    Merci d'avance

  6. #6
    Membre du Club
    Inscrit en
    Décembre 2008
    Messages
    136
    Détails du profil
    Informations forums :
    Inscription : Décembre 2008
    Messages : 136
    Points : 64
    Points
    64
    Par défaut
    Je n'ai pas encore vraiment réussi a regler mon problème. J'ai essayé en convertissant mon image en png, et en definissant mon cadre comme zone transparente. Mais avec Color color = robot.getPixelColor(e.getX(), e.getY()) , j'ai toujours encore des couleurs variables.
    J'ai donc essayé te tester la transparence de mon pixel ( pour dire que si le pixel sur lequel on a cliqué est transparent, on est a l'exterieur de l'image ) mais avec robot.getPixelColor(e.getX(), e.getY()).getAlpha(), j'obtiens toujours 255, qu'il s'agisse d'un pixel transparent ou pas.
    Si quelqu'un aurait une idée, qu'il n'hesite pas

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2008
    Messages
    34
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2008
    Messages : 34
    Points : 26
    Points
    26
    Par défaut
    Et si tu utilisais une BufferedImage avec la méthode getRBG() comme dans la FAC plutôt qu'un Robot?

    Si ton blanc n'est pas totalement pur tu augmente simplement la condition de 245,245,245 à 255,255,255? (par exemple) et regarde si tu ne peux pas limiter la diminution de qualité de ton jpg (comme avec Gimp) ou essaie de passer toi même un coup de blanc pur sur l'image ( si ton image n'est pas de qualité ).

    Si tu ne trouve pas la méthode assez précise alors délimite ton image avec un masque en noir et blanc (donc pas trop gros) qui ne sera pas visible.

    J'espère avoir pu t'aider.

Discussions similaires

  1. [WD16] Zone cliquable sur image
    Par Dynamic dans le forum WinDev
    Réponses: 4
    Dernier message: 05/12/2011, 16h24
  2. Zone Cliquable sur Image
    Par Tonyo08 dans le forum VB.NET
    Réponses: 4
    Dernier message: 12/04/2011, 16h38
  3. [HTML] création de zone cliquable sur plusieurs images succésive
    Par Xander8 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 21/07/2008, 18h59
  4. Positionnement zones cliquables sur image background mise en image map
    Par triblonto dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 22/01/2008, 15h42
  5. [Excel] Zones cliquables sur une image
    Par slydemusli dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 19/10/2006, 10h19

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo