2013-07-25 76 views
0

我一直在用ClearCanvas在C#中顯示DICOM圖像,開發人員Steve幫助我讀取圖像標籤。然而,我一直在這個項目上工作了近兩週,並試圖展示圖像。我嘗試過,並添加了代碼,以幫助史蒂夫,但我無法顯示DICOM圖像。也許我所做的是不正確的,有人可以看看代碼,並希望告訴我什麼是錯誤的,或者是他們的另一種顯示方式。我一直試圖讓這個項目在C#中工作,希望能夠轉換爲Visual Basic。我再次獲得相同的錯誤。該代碼發佈如下。使用ClearCanvas顯示DICOM圖像時出錯

enter 
     string filename = @"C:\Users\Don jar\Pictures\Xray pics\fluro.dcm"; 
     DicomFile dicomFile = new DicomFile(filename); 
     dicomFile.Load(DicomReadOptions.Default); 
     foreach (DicomAttribute attribute in dicomFile.DataSet) 
     { 
      Console.WriteLine("Tag: {0}, Value: {1}", attribute.Tag.Name, attribute.ToString()); 
     } 

     int bitsPerPixel = dicomFile.DataSet.GetAttribute(DicomTags.BitsStored).GetInt32(0, 0); 
     int width = dicomFile.DataSet.GetAttribute(DicomTags.Columns).GetInt32(0, 0); 
     int height = dicomFile.DataSet.GetAttribute(DicomTags.Rows).GetInt32(0, 0); 
     int stride = width * 2; 
     byte[] bitmapBuffer = (byte[])dicomFile.DataSet.GetAttribute(DicomTags.PixelData).Values; 


     BitmapSource bitmapSource = BitmapImage.Create(width, height, 96, 96, System.Windows.Media.PixelFormats.Gray16, null, bitmapBuffer, stride); 

     pictureBox1.Image = bitmapSource; code here 

正在顯示該錯誤是在最後一行 pictureBox1.Image =的BitmapSource; 和錯誤是

錯誤1'System.Windows.Forms.PictureBox'沒有包含'Source'的定義,也沒有接受類型爲「System.Windows.Forms」的第一個參數的擴展方法'Source'。 PictureBox'可以找到(您是否缺少使用指令或程序集引用?)C:\ Users \ Don jar \ Documents \ Visual Studio 2010 \ Projects \ DICOMCA \ DICOMCA \ Form1.c

第二個錯誤是 錯誤2無法隱式地將類型'System.Windows.Media.Imaging.BitmapSource'轉換爲'System.Drawing.Image'C:\ Users \ Don jar \ Documents \ Visual Studio 2010 \ Projects \ DICOMCA \ DICOMCA \ Form1.cs 62 33 DICOMCA

回答

0

正如錯誤所述,BitmapSource是一個System.Windows.Media.Imaging.BitmapSource圖像,即它是一個WPF圖像。
您的pictureBox1對象是一個System.Windows.Forms.PictureBox對象。
這兩件事情是不兼容的,你不能在Windows窗體圖片框中顯示WPF圖像。

您需要將BitmapSource轉換爲常規System.Drawing.Bitmap才能顯示,但幸運的是,有多種方法可以實現此目的,儘管最佳選項的種類取決於像素格式圖片。
How to convert BitmapSource to Bitmap
Is there a good way to convert between BitmapSource and Bitmap?

是第二鏈路上的答案是這樣做雖然更快的方式。

相關問題