/** * Draws the image for a Piece on top of a Square */ internal void drawPiece(PieceType piece, Square sq) { string[] pieces = { "black_king", "black_queen", "black_rook", "black_bishop", "black_knight", "black_pawn", "white_king", "white_queen", "white_rook", "white_bishop", "white_knight", "white_pawn" }; string pieceString = ""; // Get the Piece String (filename) for the piece given switch (piece) { case PieceType.k: pieceString = "black_king"; break; case PieceType.q: pieceString = "black_queen"; break; case PieceType.r: pieceString = "black_rook"; break; case PieceType.b: pieceString = "black_bishop"; break; case PieceType.n: pieceString = "black_knight"; break; case PieceType.p: pieceString = "black_pawn"; break; case PieceType.K: pieceString = "white_king"; break; case PieceType.Q: pieceString = "white_queen"; break; case PieceType.R: pieceString = "white_rook"; break; case PieceType.B: pieceString = "white_bishop"; break; case PieceType.N: pieceString = "white_knight"; break; case PieceType.P: pieceString = "white_pawn"; break; } if (pieceString.Length == 0) { // None of the above, set as empty and return. sq.setPiece(PieceType.Empty); return; } // From site http://msdn.microsoft.com/en-us/library/vstudio/aa970269(v=vs.100).aspx // Create Image Element Image myImage = new Image(); myImage.Width = 75; // Create source BitmapImage myBitmapImage = new BitmapImage(); // BitmapImage.UriSource must be in a BeginInit/EndInit block myBitmapImage.BeginInit(); myBitmapImage.UriSource = new Uri(App.getPath() + @"Images\PieceImages\" + pieceString + ".png"); myBitmapImage.DecodePixelWidth = 75; if (this.flipped & this.blackReverse & pieceString.StartsWith("b")) { myBitmapImage.Rotation = Rotation.Rotate270; } else if (this.blackReverse & pieceString.StartsWith("b")) { myBitmapImage.Rotation = Rotation.Rotate180; } else if (this.flipped) { myBitmapImage.Rotation = Rotation.Rotate90; } myBitmapImage.EndInit(); myImage.Source = myBitmapImage; myImage.IsHitTestVisible = false; sq.setPieceImage(myImage); sq.setPiece(piece); myImage.SetValue(TextBlock.TextProperty, pieceString); }