私は最近、fo-dicom を将来のプロジェクトの可能な DICOM ライブラリとして評価し始めました。
DICOM ファイルのみを読み取り、それを に変換して にSystem.Drawing.Bitmap
表示する基本的な C# Windows フォーム アプリケーションを作成しましたPictureBox
。
public partial class TestFoDicomForm : Form
{
public TestFoDicomForm()
{
InitializeComponent();
DicomImage di = new DicomImage("Image_01.dcm");
Bitmap bmp = di.RenderImage().AsBitmap();
this._pbDicomImage.Image = bmp;
}
}
このコードは機能しますが、フォームのサイズを変更し始めると、後で通知するよりも早く例外が発生します。
System.ArgumentException: パラメーターが無効です。
System.Drawing.Image.get_RawFormat()
で System.Drawing.Graphics.DrawImage(イメージ イメージ、Int32 x、Int32 y、Int32 幅、Int32 高さ)
で System.Drawing.Graphics.DrawImage(イメージ イメージ、Rectangle rect)
でSystem.Windows.Forms.PictureBox.OnPaint(PaintEventArgs pe)
で System.Windows.Forms.Control.PaintWithErrorHandling(PaintEventArgs e, Int16 layer)
で System.Windows.Forms.Control.WmPaint(Message& m)
で System.Windows.Forms
System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message & m) の .Control.WndProc(Message& m)
System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
の System.Windows.Forms.NativeWindow.Callback (IntPtr hWnd、Int32 msg、IntPtr wparam、IntPtr lparam)
例外は実際に発生しますMain()
Application.Run(new TestFoDicomForm());
try/catch
しかし、効果的に何が起こるかを調査する機能を追加できませんでした。
NuGet 経由で fo-dicom 3.0.2 への参照を追加しました (プロジェクトのターゲット フレームワークは 4.6.1 です)。環境: Windows 10 Pro、VS 2017。
興味深いことに、上記のコードに示すようにビットマップを生成し、それを保存し、アプリケーションで (DICOM を参照せずに) それを読み取り、ピクチャ ボックスに配置すると、同様のことは何も起こりません。これは、問題はビットマップ自体にあると考えさせられますが、発見できませんでした。
サイズ変更時にクラッシュしない fo-dicom.1.0.37 で作成された古いテスト アプリケーションもあります。
理由が何であるか、この効果を取り除く方法、または/および私が間違っている可能性があるのは何なのか、非常に興味があります。
(テストアプリケーションは、 http://jmp.sh/UGOg8Aiからダウンロードできます)。