/// <summary> /// Obtient le tile à l'index spécifié sur la texture donnée /// </summary> /// <param name="tileIndex">L'index du tile</param> /// <param name="texture">La texture</param> /// <returns>Le tile</returns> private Bitmap GetCroppedTexture(int tileIndex, string textureName) { if (tileIndex == GameMapTile.EMPTY) { return(null); } int textureIndex = this.RetrieveTextureIndex(textureName); string croppedKey = RetrieveCroppedKey(tileIndex, textureIndex); // Si le tile n'est pas en dictionnaire de données, on l'ajoute pour une utilisation future (évite de recharger la même texture) if (!CroppedTextures.ContainsKey(croppedKey)) { Bitmap texture = this.GetTexture(textureName); Bitmap croppedTexture = new Bitmap(GlobalData.TileSize.Width, GlobalData.TileSize.Height); Graphics graphics = Graphics.FromImage(croppedTexture); GameVector2 vector = GameMapTile.DecodeFormattedIndex(tileIndex, texture.Width / GlobalData.TileSize.Width) * GlobalData.TileSize; Rectangle section = new Rectangle(vector.X, vector.Y, GlobalData.TileSize.Width, GlobalData.TileSize.Height); graphics.DrawImage(texture, DESTINATION_RECT_32, section, GraphicsUnit.Pixel); CroppedTextures.Add(croppedKey, croppedTexture); } Bitmap resultBitmap; if (CroppedTextures.TryGetValue(croppedKey, out resultBitmap)) { return(resultBitmap); } return(null); }