coucou
j'aimerais superposé deux images
pour afficher une image j'utilise la classe suivantes
je ne sais pas comment superposé deux images quand j'appelle deux fois les images sont les unes a coté des autres
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
70
71
72
73
74
75 import java.awt.*; import java.net.*; import javax.swing.*; //for simplicity, I'm assuming the image data //is loaded in memory (so getWidth() != -1) public class ImagePanel extends JPanel { public ImagePanel() { } public ImagePanel(Image image) { this.image = image; } public Image getImage() { return image; } public void setImage(Image image) { this.image = image; revalidate(); } public Dimension getPreferredSize() { getInsets(insets); int w = insets.left + insets.right; int h = insets.top + insets.bottom; if (image != null) { w += image.getWidth(null); h += image.getHeight(null); } Dimension sz = new Dimension(w,h); //System.out.println(sz); return sz; } public Dimension getMinimumSize() { return getPreferredSize(); } public void paintComponent(Graphics g) { super.paintComponent(g); if (image == null) return; getInsets(insets); int w = this.getWidth() - insets.left - insets.right; int h = this.getHeight() - insets.top - insets.bottom; //clip in case image exceeds wxh Graphics g2 = (Graphics) g.create (insets.left, insets.top, w, h); int x = (w-image.getWidth(null))/2; int y = (h-image.getHeight(null))/2; g2.drawImage(image, x, y, this); //this for ani gif g2.dispose(); } private Image image; private Insets insets = new Insets(0,0,0,0); //sample main /*public static void main(String[] argv) { JFrame f = new JFrame("ImagePanel"); f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); URL url = ImagePanel.class.getResource("Image.gif"); Image image = new ImageIcon(url).getImage(); Container cp = f.getContentPane(); cp.add(new ImagePanel(image), BorderLayout.CENTER); f.pack(); f.setVisible(true); }*/ }
ya t-il un moyen de le faire merci d'avance
merci
Partager