如何在wpf中的图像控件上显示sql中恢复的图像?

时间:2017-11-08 20:51:51

标签: c# wpf c#-3.0

我把我的字母图片放在一个单独的表格中,然后我为此定义了一个外键 我现在想要点击数据网格视图中的任何数据,以在图像的控制中显示该级别的照片。 我写了检索照片的命令,当然,我不知道它是否正确,我不知道如何控制图像。 代码

        SqlConnection imageConnection = new SqlConnection(@"Data Source = ZAHRA; Initial Catalog = Baygani; inte");

        SqlCommand imageCommand = new SqlCommand(@"select Pictures.pic1,Pictures.pic2,Pictures.pic3,Pictures.pic4,Pictures.pic5,Pictures.pic6,Pictures.pic7,Pictures.pic8,Pictures.pic9,
         Pictures.pic10 from Pictures,Latters where Pictures.idlatter=Latters.id ", imageConnection);

        imageConnection.Open();
        SqlDataReader imageReader = imageCommand.ExecuteReader();

        string imageFilename = (string)imageReader.GetValue(0);
        byte[] imageBytes = (byte[])imageReader.GetValue(1);
        MemoryStream ms = new MemoryStream(imageBytes);

1 个答案:

答案 0 :(得分:1)

假设您使用Bindings在UI中显示数据并因此使用viewmodels,我建议使用ImageSource。

要从字节数组初始化ImageSource,我编写了以下方法:

public ImageSource LoadImageSourceFromBytes(byte[] imageBytes)
{
    BitmapImage bitmapImage = new BitmapImage();

    using (MemoryStream imageStream = new MemoryStream(imageBytes))
    {
        bitmapImage.BeginInit();
        bitmapImage.StreamSource = imageStream;
        bitmapImage.CacheOption = BitmapCacheOption.OnLoad;
        bitmapImage.EndInit();
    }

    bitmapImage.Freeze();

    return bitmapImage;
}