Bonjour,
Je suis députante et je souhaite dessiner un grand carré ou il y'a des petites cases (visible ou pas) 32 sur 32 , chaque case on peut la remplir (colorié) en utilisant sa position . J'aimerai bien avoir un coup de main
Version imprimable
Bonjour,
Je suis députante et je souhaite dessiner un grand carré ou il y'a des petites cases (visible ou pas) 32 sur 32 , chaque case on peut la remplir (colorié) en utilisant sa position . J'aimerai bien avoir un coup de main
Salut,
On parle des deux principales façons de faire (utiliser des composants SWING pour constituer une grille de case, ou dessiner un dammier) dans cette discussion : http://www.developpez.net/forums/d15...re-grille-jeu/
Salut,
Enfait j'aurai bien aimé avoir un bout de code comme coup de pouce je serais reconnaissante si c'est possible parceque là je suis vraiment débutante
Si tu lis la discussion, tu y trouveras du code...
Il y a également cette discussion : http://www.developpez.net/forums/d15...r/plateau-jeu/
C'est le dessin d'un plateau de go (alors que l'exemple du premier fil que je t'ai donné utilise des composants SWING), ce n'est pas exactement un dammier, mais l'idée y est, et tu trouveras tout ce qu'il faut comme exemple de code.
Enfaite merci bcp pour ton aide du coup j'ai créer une grille mais là du coup elle crée des carreaux dans toute la fenetre moi je veux que 32 sur 32 carreaux, puis ma 2eme questions est par exemple pouvoir acceder à ses cases
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public void paintComponent(Graphics g) { super.paintComponent(g); int larg = getWidth(); int haut = getHeight(); int dim = 20; //dimension d'une case de la grille // La grille: for(int i = 0; i < larg; i +=dim) { g.drawLine(i,0,i, haut); // Les lignes verticales de la grille g.drawLine(0,i,larg, i); // Les lignes horizontales de la grille System.out.println(i); } }
Au lieu de faire une boucle sur larg (largeur de la fenêtre) de dim en dim, soit tu fais une boucle de 0 à 31 for(int i=0; i<32; i++) soit tu fais une boucle sur larg=32*dim.
Qu'entends-tu par accèder ?
Non enfaite ça marche pas quand je fais votre condition voilà tout mon code. Enfaite moi ça c'est qu'un test aprés vu que je fais du traitement d'image je dois par exemple être capable si la valeur est à 255 il met du noir dans une case précise... J'apprécierai vraiment un coup de main
Code:
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 import java.awt.*; import javax.swing.*; import java.util.*; public class DessinDansPanel extends JPanel { public static void Fenetre() { try { UIManager.setLookAndFeel("com.sun.java.swing.plaf.windows.WindowsLookAndFeel"); } catch (UnsupportedLookAndFeelException e) { System.out.println(e); } catch (ClassNotFoundException e) { System.out.println(e); } catch (InstantiationException e) { System.out.println(e); } catch (IllegalAccessException e) { System.out.println(e); } JFrame fenetre = new JFrame(); fenetre.setSize(400, 400); fenetre.setTitle(" les cases d'une grille."); JPanel panneau = new DessinDansPanel(); panneau.setBackground(Color.green); fenetre.add(panneau); fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fenetre.setVisible(true); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); int larg = getWidth(); int haut = getHeight(); int dim = 20; //dimension d'une case de la grille // La grille: for(int i = 0; i < larg; i +=dim) { g.drawLine(i,0,i, haut); // Les lignes verticales de la grille g.drawLine(0,i,larg, i); // Les lignes horizontales de la grille System.out.println(i); } } public static void main (String [] arg) { Fenetre(); } }
Si si ça marche, avec votre methode. Maintenant pouvez vous m'aider par exeple pouvoir integrer une valeur et deux positions (genre 1 cases precises) et pouvoir modifier cette case avec cette valeur
Bonjour j'ai vu ce que vous m'avez conseillé et j'ai fais ce code qui dessine dans une grille, enfaite ce qui me manque c'est par exemple il prend 2 images de départ et il lit pour chaque pixel sa position et il remplie cette derniere par rapport aux valeurs de ses pixels des 2 images et j'en ai aucune idée pouvez vous m'aider ?
Code:
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 package STAGE; import java.awt.*; import java.awt.image.BufferedImage; import java.awt.image.Raster; import javax.swing.*; import java.util.*; public class Histogrammebilineaire extends JPanel { public static void Fenetre() { JFrame fenetre = new JFrame(); fenetre.setSize(273, 295); fenetre.setTitle("Histogramme Bilinéaire"); JPanel panneau = new Histogrammebilineaire(); panneau.setBackground(Color.WHITE); fenetre.add(panneau); fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fenetre.setVisible(true); } @Override public void paintComponent(Graphics g) { super.paintComponent(g); int larg = getWidth(); int haut = getHeight(); int dim = 8; //dimension d'une case de la grille // La grille: for(int i = 0; i < dim*33; i +=dim) { g.drawLine(i,0,i, haut); // Les lignes verticales de la grille g.drawLine(0,i,larg, i); // Les lignes horizontales de la grille // System.out.println(i); } for(int j = 0; j < dim*32; j +=dim) { // Remplir les cases: for(int i = 0; i < dim*32; i +=dim) { g.setColor(Color.blue); // couleur de remplissage g.fillRect(8, 248, 8, 8); // remplissage (fill) g.setColor(Color.green); // couleur du panel } } } public static void main (String [] arg) { Fenetre(); } }
Tu peux récupérer la couleur d'un pixel d'une image en la chargeant en BufferedImage (ImageIO.read()), avec la méthode getRGB(int,int) de BufferedImage.
Bonjour,J'ai essayé ce que vous m'avez dis mais enfaite comme je dois travailler avec 2 images et prendre que les 5 premiers bits de chacune et les fusionner pour former un pixel à mettre dans le meme endroit j'arrive pas j'apprecierai un coup de main
Code:
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
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128 package STAGE; import java.awt.*; import java.awt.image.BufferedImage; import java.awt.image.Raster; import java.io.File; import java.io.IOException; import javax.imageio.ImageIO; import javax.swing.*; import java.util.*; public class Histogrammebilineaire extends JPanel { BufferedImage monImage; BufferedImage monImage2; //public Histogrammebilineaire(){ /* try { File input = new File("d:/bordd.JPG"); File input2 = new File("d:/bor.JPG"); monImage = ImageIO.read(input); monImage2 = ImageIO.read(input); int max=0; int nbpts=0; int M=1; for (int i = 0; i < monImage.getHeight() ; i++) { for (int j = 0 ; j < monImage.getWidth() ; j++) { for (int k = 0; k < monImage2.getHeight(); k++) { for (int l = 0; l <monImage2.getWidth(); l++) { int pixel = monImage.getRGB(j + k, i + l); int gray = (pixel >> 16) & 0xff; if (max<M){ max=M; nbpts++; } }}}} } catch (Exception e) { e.printStackTrace(); } } */ public static void Fenetre() { JFrame fenetre = new JFrame(); fenetre.setSize(273, 295); fenetre.setTitle("Histogramme Bilinéaire"); JPanel panneau = new Histogrammebilineaire(); panneau.setBackground(Color.WHITE); fenetre.add(panneau); fenetre.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); fenetre.setVisible(true); } @Override public void paintComponent(Graphics g) { File input = new File("d:/courbure.jpg"); File input2 = new File("d:/test.bmp"); try { monImage = ImageIO.read(input); monImage2 = ImageIO.read(input2); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } super.paintComponent(g); int larg = getWidth(); int haut = getHeight(); int dim = 8; //dimension d'une case de la grille // La grille: for(int i = 0; i < dim*33; i +=dim) { g.drawLine(i,0,i, haut); // Les lignes verticales de la grille g.drawLine(0,i,larg, i); // Les lignes horizontales de la grille // System.out.println(i); } for(int j = 0; j < dim*32; j +=dim) { // Remplir les cases: for(int i = 0; i < dim*32; i +=dim) { for ( i = 0; i < monImage.getHeight() ; i++) { for ( j = 0 ; j < monImage.getWidth() ; j++) { int pixel = monImage.getRGB(j , i ); int gray = (pixel >> 32) ; for (i = 0; i < monImage2.getHeight(); i++) { for (j = 0; j <monImage2.getWidth(); j++) { int pixel2= monImage2.getRGB(j, i); int gray2 = (pixel2 >> 32) ; g.setColor(Color.blue); // couleur de remplissage g.fillRect(gray, gray2, 8, 8); // remplissage (fill) g.setColor(Color.green); // couleur du panel } } } }}} } public static void main (String [] arg) { Fenetre(); } }