7

画像をデータベースに保存しています。..しかし、データベースからその画像を取得する方法.. 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);でエラーが表示されます。

エラー:-引数の例外がユーザーコードによって処理されませんでした

パラメータが無効です。

4

2 に答える 2

15

名前空間でクラスを使用できますSystem.Drawingが、プロジェクトを右クリックして[参照の追加...]オプションを選択することにより、目的のクラスを含むアセンブリへの参照を追加する必要があります。

于 2012-05-19T06:58:44.320 に答える
0

描画部分に関する限り、コードは問題ありません。おそらく、データベースから読み込もうとしている画像データに問題があります (データ形式の不一致や間違った列の選択などが原因である可能性があります)。画像をデータベースに保存するコードを共有することをお勧めします。それなしでは知る方法がないからです。

このコードサンプルはあなたが望むことを行います(データベース関連の部分をコメントアウトし、ファイルの読み込みに置き換えました):

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 が指摘したように)。

于 2012-05-19T07:29:19.177 に答える