Podemos utilizar el método copyArea para copiar y pegar una imagen o zona del frame (marco).
• copyArea
public abstract void copyArea(int x, int y, int width, int height, int dx,
int dy)
Copia un área del componente por una distancia especificada por dx y dy. Desde el punto especificado por x e y, este método se copia hacia abajo y hacia la derecha. Para copiar un área del componente hacia la izquierda o hacia arriba, especifique un valor negativo para dx o dy. Si una parte del rectángulo de origen se encuentra fuera de los límites del componente, o está oscurecida por otra ventana o componente, copyArea no podrá copiar los píxeles asociados. El área omitida se puede actualizar llamando al método de pintura del componente.
Parametros:
x - la coordenada x del rectángulo fuente.
y - la coordenada y del rectángulo fuente.
width – ancho del objeto original.
height – alto del objeto original.
dx - la distancia horizontal para copiar los píxeles.
dy- la distancia vertical para copiar los píxeles.
import java.awt.*;
import java.io.*;
import javax.imageio.*;
import javax.swing.*;
public class practica5_frame {
public static void main(String[] args) {
Marco6 marco = new Marco6();
marco.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
marco.setVisible(true);
}
}
class Marco6 extends JFrame{
public Marco6() {
setTitle ("marco con dibujos");
setBounds(400,200,700,400);
Lamina6 lamina = new Lamina6();
add(lamina);
}
}
class Lamina6 extends JPanel{
public void paintComponent(Graphics g) {
super.paintComponent(g);
setBackground(Color.GRAY);
File ruta = new File("images2.jpg");
try { //tratamineto de excepciones, haz esto y si no catch
foto = ImageIO.read(ruta);
}
catch(IOException e) {
JOptionPane.showConfirmDialog(null, "no esta la foto");
}
//escribimos la foto en nuestra lamina
g.drawImage(foto, 50, 50, null);
g.copyArea(50, 50, 500, 170, 300, 120);
}
private Image foto;
}
No hay comentarios:
Publicar un comentario