Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : union de polygones [ Multimédia / Java2D ] (umafaid)

mercredi 25 juillet 2007 à 17:55:04 | union de polygones

umafaid

Bonjour,

je dessines des polygones sur un panel et j'aimerais faire une union de deux polygones. Quelqu'un aurait-il des idées à me donner pour faire cela?

Merci d'avance.

vendredi 27 juillet 2007 à 12:22:04 | Re : union de polygones

Twinuts

Membre Club Administrateur CodeS-SourceS

Salut,

passe par la classe java.awt.geom.Area qui permet de faire ce que tu veux

Voici un exemple assez simple de ce que tu peux faire (Je l'ai trouvé sur le web) :
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.event.ItemEvent;
import java.awt.event.ItemListener;
import java.awt.geom.Area;
import java.awt.geom.Ellipse2D;
import java.awt.geom.Rectangle2D;

import javax.swing.JComboBox;
import javax.swing.JComponent;
import javax.swing.JFrame;
import javax.swing.JPanel;

public class CombiningShapes extends JComponent {
  private Shape mShapeOne, mShapeTwo;

  private JComboBox mOptions;

  public CombiningShapes() {
    mShapeOne = new Ellipse2D.Double(40, 20, 80, 80);
    mShapeTwo = new Rectangle2D.Double(60, 40, 80, 80);
    setBackground(Color.white);
    setLayout(new BorderLayout());

    JPanel controls = new JPanel();

    mOptions = new JComboBox(new String[] { "outline", "add",
        "intersection", "subtract", "exclusive or" });

    mOptions.addItemListener(new ItemListener() {
      public void itemStateChanged(ItemEvent ie) {
        repaint();
      }
    });
    controls.add(mOptions);
    add(controls, BorderLayout.SOUTH);
  }

  public void paintComponent(Graphics g) {
    Graphics2D g2 = (Graphics2D) g;
    g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
        RenderingHints.VALUE_ANTIALIAS_ON);

    String option = (String) mOptions.getSelectedItem();
    if (option.equals("outline")) {
      // draw the outlines and return.
      g2.draw(mShapeOne);
      g2.draw(mShapeTwo);
      return;
    }

    // Create Areas from the shapes.
    Area areaOne = new Area(mShapeOne);
    Area areaTwo = new Area(mShapeTwo);
    // Combine the Areas according to the selected option.
    if (option.equals("add"))
      areaOne.add(areaTwo);
    else if (option.equals("intersection"))
      areaOne.intersect(areaTwo);
    else if (option.equals("subtract"))
      areaOne.subtract(areaTwo);
    else if (option.equals("exclusive or"))
      areaOne.exclusiveOr(areaTwo);

    // Fill the resulting Area.
    g2.setPaint(Color.orange);
    g2.fill(areaOne);
    // Draw the outline of the resulting Area.
    g2.setPaint(Color.black);
    g2.draw(areaOne);
  }
 
  public static void main(String[] args) {
      JFrame.setDefaultLookAndFeelDecorated(true);
    JFrame f = new JFrame();
    f.setTitle("Test");
    f.setDefaultCloseOperation(3);
    f.add(new CombiningShapes());
    f.setSize(220, 220);
    f.setLocationRelativeTo(null);
    f.setVisible(true);
  }
 
}



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

OoWORAoO



Cette discussion est classé dans : union, polygones


Répondre à ce message

Sujets en rapport avec ce message

faire bouger des polygones [ par dian_e ] bonjour est il possible en java de faire bouger des polygones, nous cherchons des programmes ou des aides.nous devons faire bouger les blocs 3d de roc Surface et perimetre [ par Pratana ] salutjai un polygone que je vais couper en 2 puis j'enleve un des 2 polygones restant le plus petit.ma question est : prendre le plus petit perimetre faire l'union deux listes [ par ulysse00 ] salut j'ai deux liste A =[[12,13,15],[134]]B=[[12,13,15],[1356]]je cherche a faire l'union entre deux liste A et B dans C de façon avoir C==[[12,13,15


Nos sponsors

Sondage...

CalendriCode

Septembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
2930     

Consulter la suite du CalendriCode

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, 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
Temps d'éxécution de la page : 0,14 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.