private void CreateMaskedVolumeView(short theIsoValueInHounsfield, byte[][,] mask, CTSliceInfo[] slices) { // shall be used only once, because original slice data will be altered // require data reloading for (int k = 0; k != slices.Length; ++k) { CTSliceInfo ct = slices[k]; short[,] buffer = ct.HounsfieldPixelBuffer; byte[,] maska = mask[k]; for (int r = 0; r != ct.RowCount; ++r) { for (int c = 0; c != ct.ColumnCount; ++c) { if (maska[r, c] > 0) { buffer[r, c] = theIsoValueInHounsfield; } } } } if (slices.Length > 2) { VolumeView aVolumeViewWindow = new VolumeView(); Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait; // Create the Volume for the specified IOD list / IsoValue. aVolumeViewWindow.CreateVolume(slices, theIsoValueInHounsfield); aVolumeViewWindow.Title = string.Format("DICOM Viewer - Volume View (IsoValue = {0} in Hounsfield Units)", theIsoValueInHounsfield.ToString()); Mouse.OverrideCursor = null; aVolumeViewWindow.ShowDialog(); } else { System.Windows.MessageBox.Show("The series does not have suffcient CT Slices in order to generate a Volume View!"); } }
// Helper method to create and show the Volume View Dialog private void CreateVolumeView(short theIsoValueInHounsfield, CTSliceInfo[] slices) { if (slices.Length > 2) { VolumeView aVolumeViewWindow = new VolumeView(); Mouse.OverrideCursor = System.Windows.Input.Cursors.Wait; // Create the Volume for the specified IOD list / IsoValue. aVolumeViewWindow.CreateVolume(slices, theIsoValueInHounsfield); aVolumeViewWindow.Title = string.Format("DICOM Viewer - Volume View (IsoValue = {0} in Hounsfield Units)", theIsoValueInHounsfield.ToString()); Mouse.OverrideCursor = null; aVolumeViewWindow.ShowDialog(); } else { System.Windows.MessageBox.Show("The series does not have suffcient CT Slices in order to generate a Volume View!"); } }