C#WPF显示来自Mysql的图像

C#WPF显示来自Mysql的图像,c#,mysql,wpf,image,C#,Mysql,Wpf,Image,我是一名学生,我不擅长编程。 我在mysql数据库中为每个玩家保存了图像。我创建了一个程序,可以从数据库中列出一些足球运动员。当我单击datagrid中列出的播放器时,会出现一个新窗口,其中包含有关该播放器的信息。一切正常,但现在我想在数据库的信息窗口中显示所选播放器的图片。有人能帮我吗?我的英语不是最好的(我17岁),所以我希望你能理解我的意思 这是我试图做的,但我不知道如何继续。另外,它在WPF中 MySqlCommand cmd = new MySqlCommand("SELECT Bi

我是一名学生,我不擅长编程。 我在mysql数据库中为每个玩家保存了图像。我创建了一个程序,可以从数据库中列出一些足球运动员。当我单击datagrid中列出的播放器时,会出现一个新窗口,其中包含有关该播放器的信息。一切正常,但现在我想在数据库的信息窗口中显示所选播放器的图片。有人能帮我吗?我的英语不是最好的(我17岁),所以我希望你能理解我的意思

这是我试图做的,但我不知道如何继续。另外,它在WPF中

 MySqlCommand cmd = new MySqlCommand("SELECT Bilder FROM spieler WHERE Bilder='{8}'");
        MySqlDataReader rdr1 = cmd.ExecuteReader();

        try
        {
            conn.Open();
            while (rdr1.Read())
            {
                // image1... I don't know what to write here
            }

        }
        catch (Exception ex)
        {
            MessageBox.Show("Fehler: " + ex);
        }

        rdr1.Close()

只需事先使用
字节[]
强制转换即可:

while (rdr1.Read())
{
   byte[] data = (byte[])reader[0]; // 0 is okay if you only selecting one column
   //And use:
   using (System.IO.MemoryStream ms = new System.IO.MemoryStream(data))
   {
      Image image = new Bitmap(ms);
   }
}

更新: 在WPF中,使用
位图图像

using (System.IO.MemoryStream ms = new System.IO.MemoryStream(data))
{
    var imageSource = new BitmapImage();
    imageSource.BeginInit();
    imageSource.StreamSource = ms;
    imageSource.CacheOption = BitmapCacheOption.OnLoad;
    imageSource.EndInit();

    // Assign the Source property of your image
    yourImage.Source = imageSource;
}

保存图像的列的类型是什么? 你可以试试这样的

Image tmp = ImageConverter.ConvertFrom(rdr1.GetStream("photo"));

其中photo是您的专栏名称

谢谢,但在这一行:
Image Image=new Bitmap(ms)我收到一个错误,它说找不到“位图”。知道吗?@user3718026是的,您的对象没有包含
位图类的程序集的引用。由于您使用的是WPF,只需将适当的图像添加到窗口中即可。请看我的更新。缺少一件事。必须设置
imageSource.CacheOption=BitmapCacheOption.OnLoad
(在
EndInit
之前),以便在关闭流之前加载位图。在MemoryStream上,它可能在没有该选项的情况下工作,但这只是偶然的。如果要立即关闭图像流,则需要设置此选项。@YairNevet我还有一个问题,我在这一行的数据处遇到一个错误:
使用(System.IO.MemoryStream ms=new System.IO.MemoryStream(data))
表示数据不在上下文中。先谢谢你。