Xaml C#替换图像数组中的图像

时间:2015-10-11 04:36:01

标签: c# xaml

在Windows窗体中我可以在资源中添加图像,然后在用户点击事件处理程序时更改图像,不确定Xaml中的更改但我无法弄明白。

private void guessClick(object sender, RoutedEventArgs e)
{
    wrongGuesses++;
    hangmanPicture.Image = hangmanImage[wrongGuesses];
}

如果我只是放hangmanPicture = hangmanImage[wrongGuesses]; 我得到不能转换。我不明白为什么它试图转换任何东西。

1 个答案:

答案 0 :(得分:0)

如果您的 hangmanImage 数组是ImageSourceBitmapImage的数组,您可以像这样使用它:

private void guessClick(object sender, RoutedEventArgs e)
{
    wrongGuesses++;
    hangmanPicture.Source = hangmanImage[wrongGuesses];
}

否则,您必须将 hangmanImage 中的任何内容转换为ImageSourceBitmapImage
如果是Bitmap,您可以在该代码之前使用以下转换器:

    public static BitmapImage ConvertToBitmapImageFromBitmap(Bitmap bitmap)
    {
        using(var memory = new MemoryStream())
        {
            BitmapImage bitmapImage;
            bitmap.Save(memory, ImageFormat.Png);
            memory.Position = 0;
            bitmapImage = new BitmapImage();
            bitmapImage.BeginInit();
            bitmapImage.StreamSource = memory;
            bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
            bitmapImage.EndInit();
            return bitmapImage;
        }
    }

那么,那将是这样的:

hangmanPicture.Source = ConvertToBitmapImageFromBitmap(hangmanImage[wrongGuesses]);