private void CreateEnemyElement(int row, int col, EnemyCharacter enemy, Grid enemyField, bool boss = false) { Image image = new Image(); BitmapImage source = new BitmapImage(); image.Source = null; source.BeginInit(); if (boss) { source.UriSource = new Uri("pack://application:,,,/Resources/CharacterSprites/Monsters/Boss/" + enemy.CharacterID + "/" + enemy.CharacterAnimationList[0].SpriteFileName); } else { source.UriSource = new Uri("pack://application:,,,/Resources/CharacterSprites/Monsters/" + enemy.CharacterID + "/" + enemy.CharacterAnimationList[0].SpriteFileName); } source.EndInit(); image.Source = source; image.Width = source.PixelWidth; image.Height = source.PixelHeight; Grid grid = new Grid() { Width = source.PixelWidth / enemy.CharacterAnimationList[0].SpriteRowCol.X, Height = source.PixelHeight / enemy.CharacterAnimationList[0].SpriteRowCol.Y, }; TextBlock txtBlk = new TextBlock(); txtBlk.Style = (Style)(Application.Current.FindResource("EnemyDamageInfo")); grid.Children.Add(txtBlk); Canvas.SetLeft(image, 0); Canvas.SetTop(image, 0); Canvas canvas = new Canvas() { Width = source.PixelWidth / enemy.CharacterAnimationList[0].SpriteRowCol.X, Height = source.PixelHeight / enemy.CharacterAnimationList[0].SpriteRowCol.Y }; canvas.Style = (Style)(Application.Current.FindResource("EnemyCanvas")); canvas.Children.Add(image); canvas.Children.Add(grid); if (boss) { Grid.SetRow(canvas, 1); } else { Grid.SetRow(canvas, row); } Grid.SetColumn(canvas, col); enemyField.Children.Add(canvas); var canvasImage = (Canvas)enemyField.Children[row]; enemy.SwitchAnimation(canvasImage, 0, App.resourcePaths.GetEnemyPath(enemy.CharacterID), null); }