我可以在 wpf 中使用 System.Drawing 吗?

本文关键字:System Drawing wpf 我可以 | 更新日期: 2023-09-27 18:34:51

我正在将图像保存在数据库中......但是如何从数据库中检索该图像..当我尝试使用system.drawing..它显示错误..某些PPL说我不能在WPF中使用System.Drwaing..甚至不是DLL文件..

我的代码是

private void btnShow_Click(object sender, RoutedEventArgs e)
{
       DataTable dt2 =  reqBll.SelectImage().Tables[0];
       byte[] data = (byte[])dt2.Rows[0][1];
       MemoryStream strm = new MemoryStream();
       strm.Write(data, 0, data.Length);
       strm.Position = 0;
       System.Drawing.Image img = System.Drawing.Image.FromStream(strm);
       BitmapImage bi = new BitmapImage();
       bi.BeginInit();
       MemoryStream ms = new MemoryStream();
       img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
       ms.Seek(0, SeekOrigin.Begin);
       bi.StreamSource = ms;
       bi.EndInit();
       ImgBox.Source = bi;
    }

现在怎么办?

我使用了system.drawing.dll..现在我可以使用system.drawing.bitmap..但是使用后在System.Drawing.Image.FromStream(strm(显示错误;

错误:- 用户代码未处理参数异常

参数无效。

我可以在 wpf 中使用 System.Drawing 吗?

您可以使用

System.Drawing 命名空间中的类,但您必须添加对包含您感兴趣的类的程序集的引用,方法是右键单击项目,然后选择"添加引用..."选择

就绘图部分而言,您的代码很好,问题可能与您尝试从数据库加载的图像数据有关(可能是由不匹配的数据格式或选择错误的列等引起的(。您可能希望共享将图像保存到数据库的代码,因为没有它就无法知道。

这个代码示例可以执行您想要的操作(我注释掉了与数据库相关的部分并将其替换为文件加载(:

private void btnShow_Click(object sender, RoutedEventArgs e)
{
  // DataTable dt2 = reqBll.SelectImage().Tables[0];
  // byte[] data = (byte[]) dt2.Rows[0][1];
  // MemoryStream strm = new MemoryStream();
  // strm.Write(data, 0, data.Length);
  System.Drawing.Image bmp = System.Drawing.Bitmap.FromFile(@"C:'Temp'test.png");
  MemoryStream strm = new MemoryStream();
  bmp.Save(strm, System.Drawing.Imaging.ImageFormat.Bmp);
  strm.Position = 0;
  System.Drawing.Image img = System.Drawing.Image.FromStream(strm);
  BitmapImage bi = new BitmapImage();
  bi.BeginInit();
  MemoryStream ms = new MemoryStream();
  img.Save(ms, System.Drawing.Imaging.ImageFormat.Bmp);
  ms.Seek(0, SeekOrigin.Begin);
  bi.StreamSource = ms;
  bi.EndInit();
  imgBox.Source = bi;
}

话虽如此,如果这是一个新应用程序,则仅使用 WPF 比混合使用 Windows 窗体和 WPF 类和元素更可取(正如 Jeff Mercado 指出的那样(。