Salvaschermo

di il
1 risposte

Salvaschermo

Scusate se sto alle prime armi:
Come posso utilizzare una immagine BufferedImage (Catturata con Robot().createScreenCapture) mettendola come sfondo (magari senza cornice) e senza doverla salvare da qualche parte nel computer?

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.image.BufferedImage;
import java.io.*;
import javax.imageio.ImageIO;
import java.awt.Graphics;
import java.awt.Image;

class MyPanel extends JPanel implements ActionListener {
private Timer timer;
private final int PAUSE = 50;
int j,r;
MyPanel() {
try {
} catch(Exception e) {}
timer = new Timer(PAUSE, this);
timer.start();
}

public void actionPerformed(ActionEvent ae) {

/*repaint();*/
}
public void paintComponent(Graphics g) {
setOpaque(false);
Image img = Toolkit.getDefaultToolkit().createImage("/home/paolo/Scrivania/screencapture.jpg");
try {
MediaTracker track = new MediaTracker(this);
track.addImage(img, 0);
track.waitForID(0);
} catch (InterruptedException e) {
e.printStackTrace();
}
g.drawImage(img, 0, 0, null);
for(j=0;j<200;j++)
{
r=(int)(Math.random()*Math.random()*100);
g.drawOval((int) (Math.random()*1440),(int) (Math.random()*900),r,r);
}
}
}


class AnimationExample extends JFrame {
private MyPanel panel;

AnimationExample() {
super("Esempio Animazione");

panel = new MyPanel();
add(panel);

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}

public static void makeGUI() {
AnimationExample ae = new AnimationExample();
ae.setSize(1440, 900);
ae.setVisible(true);
}

public static void main(String[] args) throws AWTException, IOException {
// capture the whole screen
BufferedImage screencapture = new Robot().createScreenCapture(
new Rectangle(Toolkit.getDefaultToolkit().getScreenSize()) );

// Save as JPEG
File file = new File("/home/paolo/Scrivania/screencapture.jpg");
ImageIO.write(screencapture, "jpg", file);
try {
SwingUtilities.invokeAndWait(new Runnable() {
public void run() {
makeGUI();
}
});
} catch(Exception e) {}
}
}

1 Risposte

  • Re: Salvaschermo

    ppinna ha scritto:


    Come posso utilizzare una immagine BufferedImage (Catturata con Robot().createScreenCapture) mettendola come sfondo (magari senza cornice) e senza doverla salvare da qualche parte nel computer?
    Una finestra "pura", senza decorazioni è JWindow. Non fare però custom painting direttamente in JWindow. Esso ha un content-pane, inseriscici dentro un TuoPanello (extends JPanel) in cui fai il custom painting nel paintComponent(Graphics)

    Puoi eventualmente usare il Window di AWT. Qui puoi fare direttamente del custom painting nel paint (non paintComponent, qui è AWT non Swing).

    Nota: in un paint/paintComponent:
    - NON fare setOpaque
    - NON "caricare" immagini
    - NON fare "tracking" delle immagini
Devi accedere o registrarti per scrivere nel forum
1 risposte