Extraire imagette d'une image
Bonjour je selectionne une partie d'une image je suis censée afficher que cette partie dans une Jframe apart mais j'arrive pas j'aimerai bien avoir un coup de main
Code:
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
| rotected void paintComponent(Graphics g)
{
addMouseListener(this);
addMouseMotionListener(this);
super.paintComponent(g);
if(monImage != null)
g.drawImage(monImage,200,10,null);
final Graphics2D g2 = (Graphics2D) g;
if ( derniereSelection!=null ) {
g2.setColor(Color.BLUE);
g2.draw(derniereSelection); // dessine le rectangle
}
if (pmove != null && porig != null) {
g2.setColor(Color.BLUE);
// calcul de la selection
final Rectangle rect = new Rectangle((pmove.x > porig.x) ? porig.x : pmove.x,
(pmove.y > porig.y) ? porig.y : pmove.y,
(pmove.x > porig.x) ? pmove.x - porig.x : porig.x
- pmove.x, (pmove.y > porig.y) ? pmove.y
- porig.y : porig.y - pmove.y);
// dessine le fond de la selection avec un effet de transparence
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, .2f));
g2.fillRect(rect.x, rect.y, rect.width, rect.height);
// suppression de la transparence pour dessiner la bordure
g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 1f));
g2.drawRect(rect.x, rect.y, rect.width, rect.height);
}
}
public void mousePressed(final MouseEvent e) {
porig = e.getPoint(); // récupération du point d'origine
// repaint du composant
repaint();
}
public Rectangle getDerniereSelection() {
return derniereSelection;
}
public void mouseReleased(final MouseEvent e) {
// cleanup de l'affichage
if (!Objects.equals(pmove,porig) ) { // on ne fait pas en cas de sélection vide (si les deux points sont les mêmes)
Rectangle rectangle = new Rectangle();
rectangle.setFrameFromDiagonal(porig,pmove); // on s'assure que le rectangle est correctement orienté en utilisant cette méthode
derniereSelection = rectangle;
}
pmove = null;
porig = null;
// repaint du composant
repaint();
}
public void mouseDragged(final MouseEvent e) {
pmove = e.getPoint(); // récupération du point en déplacement
// repaint du composant
repaint();
}
public void mouseClicked(final MouseEvent e) { }
public void mouseEntered(final MouseEvent e) { }
public void mouseExited(final MouseEvent e) { }
public void mouseMoved(final MouseEvent e) { } |