Affichage d'image en Java
Résolu
Toto
-
Toto -
Toto -
Bonjour,
Je cherche à afficher un graphique à partir d'un tableau de double contenant les ordonnées des points. Pour ce faire j'ai écrit le code suivant en Java :
Je l'appelle ensuite à l'aide de :
Le tableau n'est pas vide, la fonctionprintGraphic est bien appelé mais aucune fenêtre ne s'ouvre. Est ce que je n'ai aps compris le fonctionnement de la méthode repaint()? Ou est-ce autre chose?
Merci de votre aide.
Je cherche à afficher un graphique à partir d'un tableau de double contenant les ordonnées des points. Pour ce faire j'ai écrit le code suivant en Java :
import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.Graphics; import java.awt.image.BufferedImage; import javax.swing.JFrame; import javax.swing.JPanel; public class ImagePrint extends JFrame { private Container container = new Container(); private static final long serialVersionUID = 1L; public ImagePrint(){ super("ImagePrint"); setDefaultCloseOperation(EXIT_ON_CLOSE); JPanel panel = new PrintPanel(); panel.setPreferredSize(new Dimension(320, 320)); container.add(panel); } public class PrintPanel extends JPanel { private BufferedImage img; private static final long serialVersionUID = 2L; public PrintPanel(){ super(); img = new BufferedImage(320, 320, BufferedImage.TYPE_INT_ARGB); } public void printGraphic(double[] matrix) { for(int i = 0; i < matrix.length; i++) img.setRGB((int)(i*((double)getWidth()+0.5)/matrix.length), (int)(matrix[i]*getHeight()/getMax(matrix)), Color.green.getRGB()); repaint(); } private double getMax(double[] matrix) { double max = 0.0; for(int i = 0; i<matrix.length; i++) if(max < matrix[i]) max = matrix[i]; return max; } public void paint(Graphics graph) { graph.drawImage(img, 0, 0, null); } } }
Je l'appelle ensuite à l'aide de :
ImagePrint img = new ImagePrint(); ImagePrint.PrintPanel panel = img.new PrintPanel(); panel.printGraphic(monTableau);
Le tableau n'est pas vide, la fonctionprintGraphic est bien appelé mais aucune fenêtre ne s'ouvre. Est ce que je n'ai aps compris le fonctionnement de la méthode repaint()? Ou est-ce autre chose?
Merci de votre aide.
A voir également:
- Affichage d'image en Java
- Jeux java itel - Télécharger - Jeux vidéo
- Waptrick java football - Télécharger - Jeux vidéo
- Eclipse java - Télécharger - Langages
- Waptrick java voiture - Télécharger - Jeux vidéo
- Java apk - Télécharger - Langages
5 réponses
J'ai essayé de remplacer
par
La fonction
me renvoie bien true, mais toujours rien ne s'affiche. Si à la place d'afficher le BufferedImage je l'enrengistre en png, le fichier image est vide.
repaint()
par
paint(img.getGraphics());
La fonction
graph.drawImage(img, 0, 0, null)
me renvoie bien true, mais toujours rien ne s'affiche. Si à la place d'afficher le BufferedImage je l'enrengistre en png, le fichier image est vide.
Salut,
Mais quelles coordonnées contient le tableau matrix, où est-il créé ?
Quelles types de figures veux-tu dessiner ?
Dan
Mais quelles coordonnées contient le tableau matrix, où est-il créé ?
Quelles types de figures veux-tu dessiner ?
Dan
Pour l'instant pour faire des tests, je passe simplement {1.0, 2.0, 3.0}. Les abscisses sont elles tout simplement 1, 2, 3, 4,...
A therme j'aimerais avoir des courbes, mais dans un premier temps des simples points me conviendrais.
A therme j'aimerais avoir des courbes, mais dans un premier temps des simples points me conviendrais.
Salut,
Cette petite classe permet d'afficher une "courbe" composée de points successifs.
Cordialement,
Dan
Cette petite classe permet d'afficher une "courbe" composée de points successifs.
import javax.swing.*; import java.awt.*; public class DessinerDesPoints extends JFrame { private int x, y; private int w = 0; private int h = 0; private String point = "."; private static Font font10; // POUR LES POINTS public DessinerDesPoints() { super("DESSINER DES POINTS."); // titre setSize(400, 400); // dimensions frame setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setVisible(true); } public void paint(Graphics g) { //dimensions de la frame w = getSize().width; // selon l'écran h = getSize().height; // selon l'écran super.paint(g); // COULEUR ET TAILLE DU POINT g.setFont(font10); g.setColor(Color.RED); //sachant que w = 400 et h = 400 x = -1; // pour commencer en 0 lors de la première incrémentation de x dans la bouclewhile y = h+1; //soit y = 401 pour commencer en 400 boolean encore = true; while(encore) { if( (x < w) || (y > -1) ) { x++; y--; // affichage d'un point au coordonnées x/y g.drawString(point, x, y); } else break; } } public static void main(String[] args) { font10 = new Font("Arial", Font.BOLD, 10); new DessinerDesPoints(); } }
Cordialement,
Dan
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question