j'ai remodifé afin d'avoir une structure un peu plus propre. Le chargement de la texture dynamiquement se passe correctement. Mais lorsque lors du chargement je force afin d'afficher ma carte avec un tile particulier sur une zone de l'écran, mon problème persiste à la fermeture de mon formulaire...
(sans parler du fait que mon tile ne s'affiche pas)
De plus j'ai utilisé la méthode qui créer un formulaire depuis la classe Game que j'ai vu sur un autre tuto...
Bref, j'utilise différente méthode pour un résultat identifique avec cette histoire de mémoire. Je suis assez perplexe
EDIT:
Par contre, en forcant l'utilisation d'une texture dans le content. Je n'ai pas d'erreur mémoire à la fermeture. Mais l'affichage ne fonctionne pas mieux .
J'utilise cette méthode pour l'affichage :
Moteur c'est une classe statique sur lequel je charge une map.
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 protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); // TODO: Add your drawing code here this.spriteBatch.Begin(); var vp = this.GraphicsDevice.Viewport; Moteur.DessinerLesCalques(spriteBatch, true, false, false); this.spriteBatch.End(); base.Draw(gameTime); }
Et voici La méthode dessinerLesCalques si cela peut vous aider :
Merci d'avance
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 public static void DessinerLesCalques(SpriteBatch spriteBatch, bool affichageCalqueBasique, bool affichageCalqueObjet, bool affichageAutreCalque) { if (map != null) { if (spriteBatch == null) throw new ArgumentNullException("Aucun spriteBatch défini"); if (!affichageAutreCalque && !affichageCalqueBasique && !affichageCalqueObjet) return; Rectangle destinationRectangle = new Rectangle(0, 0, map.TailleTile.X, map.TailleTile.Y); for (int y = 0; y < map.TailleCarte.Y; y++) { for (int x = 0; x < map.TailleCarte.X; x++) { destinationRectangle.X = (int)mapOrignPosition.X + x * map.TailleTile.X; destinationRectangle.Y = (int)mapOrignPosition.Y + y * map.TailleTile.Y; if (EstCeVisible(destinationRectangle)) { Point mapPosition = new Point(x, y); if (affichageCalqueBasique) { Rectangle sourceRectangle = map.GetRectangleTile_CalqueBasique_SelonPosition(mapPosition); if (sourceRectangle != Rectangle.Empty) spriteBatch.Draw(map.TextureCarte, destinationRectangle, sourceRectangle, Color.White); } if (affichageAutreCalque) { //Rectangle sourceRectangle = map. } if (affichageCalqueObjet) { // } } } } } }
Partager