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

 Java Discussion :

Comment récupérer une couleur sur une zone précise d'un panneau


Sujet :

Java

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 13
    Points : 20
    Points
    20
    Par défaut Comment récupérer une couleur sur une zone précise d'un panneau
    bonjour à tous, je voudrais savoir s'il possible de recuperer une couleur sur une zone précise d'un
    panneau contenant une image par exemple ou un dégradé de couleur en précisant les bornes? merci
    d'avance

  2. #2
    Modérateur
    Avatar de joel.drigo
    Homme Profil pro
    Ingénieur R&D - Développeur Java
    Inscrit en
    Septembre 2009
    Messages
    12 430
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur R&D - Développeur Java
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2009
    Messages : 12 430
    Points : 29 131
    Points
    29 131
    Billets dans le blog
    2
    Par défaut
    Salut,

    Tu peux t'appuyer sur la classe Robot pour faire çà. Voici un exemple dans lequel la couleur est récupérée à l'endroit du pointeur de la souris :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    public class TestColorGrab {
     
    	private static final String NOM_FICHIER_IMAGE = "suricate.png";
     
    	public static void main(String[] args) {
    		try {
    			new TestColorGrab();
    		} catch (AWTException e) {
    			e.printStackTrace();
    		}
    	}
     
    	public TestColorGrab() throws AWTException {
    		JFrame frame = new JFrame("Grab color");
    		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
     
    		// composant dont on veut récupérer la couleur
    		Component component = createComponent();
     
    		// composant pour afficher la couleur
    		JPanel colorPanel = new JPanel();
    		colorPanel.setPreferredSize(new Dimension(24,24)); 
    		colorPanel.setBorder(BorderFactory.createLineBorder(Color.BLACK));
     
    		// layout principal
    		JPanel mainPanel = new JPanel();
    		mainPanel.setLayout(new BorderLayout());
    		mainPanel.add(component, BorderLayout.CENTER);
    		mainPanel.add(colorPanel, BorderLayout.SOUTH);
     
    		frame.getContentPane().add(mainPanel);
     
    		Robot robot = new Robot();
    		component.addMouseMotionListener(new MouseMotionAdapter() {
     
    			@Override
    			public void mouseMoved(MouseEvent e) {
    				Point point = e.getComponent().getLocationOnScreen();
    				point.x += e.getX();
    				point.y += e.getY();
    				Color color = robot.getPixelColor(point.x, point.y);
    				colorPanel.setBackground(color);  
    			}
    		});
     
    		frame.setSize(300, 300);
    		frame.setLocationRelativeTo(null);
    		frame.setVisible(true);
    	}
     
     
    	private Component createComponent() {
     
    		// un arrière-plant avec dégradé
    		JPanel panel = new JPanel() { 
     
    			@Override
    			protected void paintComponent(Graphics g) {
    				Paint paint = new GradientPaint(new Point(0,0), Color.RED, new Point(0, getHeight()), Color.YELLOW);
    				((Graphics2D)g).setPaint(paint);
    				g.fillRect(0, 0, getWidth(), getHeight());
    			}
    		};
    		panel.setLayout(new BorderLayout());
     
    		// un avant-plan avec image
    		JLabel label = new JLabel(new ImageIcon(NOM_FICHIER_IMAGE));
    		panel.add(label, BorderLayout.CENTER);
    		return panel;
    	}
     
    }
    On peut procéder également en créant une image du composant, mais utiliser la classe Robot est plus simple à mon avis.
    L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
    La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
    Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
    Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
    N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
    Nouveau sur le forum ? Consultez Les Règles du Club.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2013
    Messages : 13
    Points : 20
    Points
    20
    Par défaut
    Merci Joel.drigo, je vais l'essayer.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Changer une couleur en une autre sur une figure
    Par Mac52 dans le forum MATLAB
    Réponses: 2
    Dernier message: 26/02/2014, 11h23
  2. [WD18] Metre une colonne d'une Table sur une ligne d'une autre Table
    Par Totophe2 dans le forum WinDev
    Réponses: 2
    Dernier message: 22/11/2013, 12h58
  3. Réponses: 1
    Dernier message: 11/11/2009, 11h55
  4. Comment récupérer des fichiers sur une autre machine
    Par JiCeBe dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 19/08/2009, 12h02
  5. Réponses: 3
    Dernier message: 11/05/2006, 17h47

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