begin process at 2010 02 10 06:23:24
  Trouver un code source :
 
dans
 
Accueil > Forum > 

JAVA / J2EE / J2ME

 > 

Multimédia

 > 

Java2D

 > 

Remplissage forme quelconque


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Remplissage forme quelconque

vendredi 20 avril 2007 à 19:22:20 | Remplissage forme quelconque

GIGN90

Bonjour à tous, voilà j'aurais besoin d'un renseignement.
J'ai ma zone de dessin avec des formes quelconques (pas de carré ou de rectangle, des formes vraiment quelconque, qui ne ressemble à rien en fait), j'aimerais savoir si c'était possible que lorsque je passe ma souris sur une forme, la couleur de fond de cette dernière change.
En gros comment détecter que ma souris pointe sur une forme et ensuite comment dessiner l'aire de cette forme.Est-ce réalisable?

Merci d'avance.


vendredi 20 avril 2007 à 22:02:56 | Re : Remplissage forme quelconque

Twinuts

Membre Club Administrateur CodeS-SourceS
Salut,

Si tu dessines avec des polygones tu peux tester le coordonnées de la souris avec sa méthode contains


------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
vendredi 20 avril 2007 à 22:58:58 | Re : Remplissage forme quelconque

Ombitious_Developper

DSalut:

Polygon polygon = ...;

Je vais reprendre l'idée de Twinuts (Bonne idée). Tout simplement, car toute forme est un polygone (ensemble de lignes) qui donnent l'illusion d'être bien courbées.

1. Si la forme est fermée
(xpoints [0] == xpoints [npoints -1] && ypoints [0] == ypoints [npoints - 1])

Déterminer le plus petit rectangle qui encercle le polygone:

Rectangle rect = polygon.getBounds ();

for (int i = rect.x; i < rect.width; ++i) {
    for (int j = rect.y; j < rect.height; ++j) {
       if (polygon.contains (i, j)) {
          // COLORER CE POINT AVEC UNE COULEUR DONNEE
          // g est un objet instance de la classe Graphics ou Graphics2D
          // g.setColor (..., ..., ...)
          // g.drawRect (i, j, 1, 1);

       }
    }
}

2. Si la forme est ouverte
(xpoints [0] != xpoints [npoints -1] || ypoints [0] != ypoints [npoints - 1])

Dans ce cas il vaut mieux colorer toute la surface avec la couleur choisie puis de redessiner le polygone avec une couleur différente.

Bonne chance...

________________________________________________________________________________
A.B. :  "Dieu nous donne des mains, mais il ne bâtit pas les ponts

vendredi 20 avril 2007 à 23:06:49 | Re : Remplissage forme quelconque

Ombitious_Developper

Salut:

Désolé, j'ai oublié que la classe Graphics a la méthode fillPolygon () qui fait ça. donc oublie ce que j'ai écrit la haut. 

________________________________________________________________________________
A.B. :  "Dieu nous donne des mains, mais il ne bâtit pas les ponts"

vendredi 20 avril 2007 à 23:34:20 | Re : Remplissage forme quelconque

Twinuts

Membre Club Administrateur CodeS-SourceS

Salut,

pour le petit exemple d'application de mon poste ci-dessus :

import java.awt.Color;
import java.awt.Graphics;
import java.awt.Polygon;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;

import javax.swing.JFrame;
import javax.swing.JPanel;

public class PolygonSample extends JPanel implements MouseMotionListener {
    private static final long    serialVersionUID   = 8952637440856949296L;
    private boolean                 contains                    = false;
    private Polygon                polygon                   = new Polygon();

    public PolygonSample() {
        addMouseMotionListener(this);

        // construit le polygone
        polygon.addPoint(50, 50);
        polygon.addPoint(150, 150);
        polygon.addPoint(50, 150);
    }

    public void paintComponent(Graphics g) {
        super.paintComponent(g);

        g.setColor(new Color(150, 50, 150));
        if (contains)
            g.fillPolygon(polygon);
        else
            g.drawPolygon(polygon);
    }

    public void mouseMoved(MouseEvent e) {
        // teste si la souris est dans le polygone ou non
        if (polygon.contains(e.getPoint()))
            contains = true;
        else
            contains = false;
        repaint();
    }

    public void mouseDragged(MouseEvent e) {
    }

    public static void main(String[] args) {
        JFrame f = new JFrame();
        f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        f.setSize(300, 300);
        f.setLocationRelativeTo(null);
        f.setContentPane(new PolygonSample());
        f.setVisible(true);
    }
}




------------------------------------
"On n'est pas au resto : ici on ne fait pas dans les plats tout cuits ..."

WORA
dimanche 22 avril 2007 à 13:30:16 | Re : Remplissage forme quelconque

GIGN90

Merci à tous pour vos réponses, je testerais très prochainement la réponse qui a été proposée je vous tiendrais au courant pour savoir si j'y arrive ou bien si je rencontre des difficultés .
Merci.




Cette discussion est classée dans : souris, forme, remplissage, quelconque, formes


Répondre à ce message

Sujets en rapport avec ce message

creer des objet graphique de toute forme qui receptent les evenement souris ou clavier [ par tartur ] Bonjour à tous, En fait je voudrais coller sur un panel ou un canvas un objet graphique que je crée moimême par exemple un disque et cette objet doit Création d'un composant [ par ghilliesuit ] Salut, Je suis actuellement en train de créer un composant java du type bouton en forme de losange. Ma classe losange dérive de la classe Component. L split pour plate forme java 1. maximum [ par professeursidi ] Salut a tous,Pourriez vous me ce ke je doi utiliser pour separer des strings d'une ligne, sans utiliser split... sachant que je lit un fichier texte l Ecrire du texte dans une JFrame [ par ChocoBiscuit ] Salut à Tous...Je suis débutant en Java, et je bute depuis quelques jours sur un problème assez idiot en soit... mais vraiment penible...Situation : Remplissage automatique d'un formulaire [ par tillusjava ] Bonjour à tous.Je suis débutant en programmation java et je veux creer un petit programme qui me permet de me connecter à un site distant par login et Changer la forme d'un bouton [ par Sw1tch ] Bonjour,j'aimerais pouvoir modifier la forme de mes boutons[forme hexagonale ou triangulaire par exemple]. Je travail sous Jbuilder8 ed.persoEst-ce qu Gestion de la molette de la souris [ par gus2647 ] Bonjour, Dans mon application j ai cree un ScrollPanel, et j aimerai pouvoir faire bouger l ascenseur avec la molette de la souris.Est ce que quelqu u curseur, souris [ par sebnormal ] bonjour,je voudrais savoir comment faire diparaitre la souris.je fait suivre une image, un viseur, mais on voit toujours la souris... je suis sure qu Je cherche à ecrire un applet avec les propriété suivantes [ par eternal ] Le texte tapé apparait au pointeur de la sourisLe deplacement de la souris entraine le deplacement du texteSi le bouton est enfoncé llors d'un mouveme forme d'une fenetre [ par kasperone ] kaSpeRje voudrait savoir s'il est possible de créer de fenetre ki ne soit pas rectangulaire.et de rendre des partie de la fenetre transp


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,406 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales