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
| package n7.gh4.synthese.view;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.image.BufferedImage;
import javax.swing.JPanel;
import n7.gh4.synthese.model.EcranEvent;
import n7.gh4.synthese.model.EcranListener;
import n7.gh4.synthese.model.RenduScene;
/**
* Cette classe représente l'écran de rendu, qui contient l'affichage du rendu
* de la scène.
*
* @author rom1v
*/
public class EcranRendu extends JPanel implements EcranListener {
private BufferedImage buf;
private int w; // Nombre de pixels horizontaux
private int h; // Nombre de pixels verticaux
/**
* Crée un écran de rendu.
*
* @param rendu
* Rendu à représenter.
*/
public EcranRendu(RenduScene rendu) {
super();
init(rendu);
}
/**
* Affecte un rendu de scène à un écran.
*
* @param rendu
* Rendu de scène.
*/
public void init(RenduScene rendu) {
w = rendu.getEcran().getResolutionH();
h = rendu.getEcran().getResolutionV();
setMinimumSize(new Dimension(w,h));
setPreferredSize(new Dimension(w, h));
buf = new BufferedImage(w, h, BufferedImage.TYPE_INT_RGB);
}
public void paintComponent(Graphics graphics) {
Graphics2D g2D = (Graphics2D) graphics;
g2D.drawImage(buf, null, 0, 0);
}
public void ecranModifie(EcranEvent e) {
Graphics2D g = (Graphics2D) buf.getGraphics();
int x = e.getX();
int y = e.getY();
int sizeX = e.getTailleBlocH();
int sizeY = e.getTailleBlocV();
g.setColor(e.getCouleur().toColor());
g.fillRect(x, y, sizeX, sizeY);
}
} |