ImageGear for .NET User Guide > Getting Started > ImageGear for .NET Visual Studio 2008/2005 Tutorials > ImageGear for .NET C# WPF Tutorial > Adding DICOM Support |
Once the base of the tutorial application is completed, you can extend it with DICOM support using the following steps:
You should now have the ImageGear21.Formats.Dicom assembly listed under References in the Solution Explorer.
Next, add the DICOM using statement. Open the code for Window1.xaml.cs. At the top of the code add the following statement:
C# |
Copy Code |
---|---|
using ImageGear.Formats.DICOM; |
C# |
Copy Code |
---|---|
// Support for DICOM format ImGearFileFormats.Filters.Insert(0, ImGearDICOM.CreateDICOMFormat()); // Set DICOM DIMSE control value for wide range of DICOM file detection. ImGearFileFormats.Filters.Get(ImGearFormats.DICOM).Parameters.GetByName("LoadDetectSkipDIMSE").Value = true; // Set LoadConcatenateRepeatedDE flag to true by default. ImGearFileFormats.Filters.Get(ImGearFormats.DICOM).Parameters.GetByName("LoadConcatenateRepeatedDE").Value = true; |
This will add the DICOM format to the ImageGear formats list. And now you are ready to compile and run the finished application supporting DICOM pages.
C# |
Copy Code |
---|---|
private ImGearDocument igDocument; |
C# |
Copy Code |
---|---|
igPage = ImGearFileFormats.LoadPage(stream, 0); |
C# |
Copy Code |
---|---|
igDocument = ImGearFileFormats.LoadDocument(stream, 0, 1); igPage = imGearDocument.Pages[0]; |
It does the same thing, but using the ImGearDocument API.
Now you are ready to compile and run the finished application working with DICOM documents.
C# |
Copy Code |
---|---|
using ImageGear.ART; |
C# |
Copy Code |
---|---|
// DICOM overlays ImGearARTPage artPage = ImGearDICOM.LoadOverlay(igPage, false); if (artPage == null) { artPage = new ImGearARTPage(); } artGUI.Page = artPage; // Create a new page display igPageDisplay = new ImGearPresentationPageDisplay(igPage, artPage); // Associate page with the page view imGearPageView1.Display = igPageDisplay; // Cause the page view to update imGearPageView1.Update(); |
This will enable displaying overlays after loading the DICOM page.
C# |
Copy Code |
---|---|
ImGearDICOM.SaveOverlay((imGearPageView1.Display.ARTPage as ImGearARTPage), imGearPageView1.Display.Page as ImGearRasterPage); |
C# |
Copy Code |
---|---|
private ImGearMetadataHead presStateOrigMetadata; public static RoutedCommand LoadPresStateCmd = new RoutedCommand(); public static RoutedCommand SavePresStateCmd = new RoutedCommand(); |
XAML |
Copy Code |
---|---|
<MenuItem Name="mnuLoadPresState" Header="_Load Presentation State" Command="{x:Static custom:Window1.LoadPresStateCmd}"/> <MenuItem Name="mnuSavePresState" Header="_Save Presentation State" Command="{x:Static custom:Window1.SavePresStateCmd}"/> |
XAML |
Copy Code |
---|---|
<CommandBinding Command="{x:Static custom:Window1.LoadPresStateCmd}" CanExecute="CanExectutePageAvailable" Executed="LoadPresState"/> <CommandBinding Command="{x:Static custom:Window1.SavePresStateCmd}" CanExecute="CanExectutePageAvailable" Executed="SavePresState"/> |
C# |
Copy Code |
---|---|
if (!(igPage is ImGearRasterPage)) { return; } System.Windows.Forms.OpenFileDialog od = new System.Windows.Forms.OpenFileDialog(); od.Filter = "Presentation State (*.pre)|*.pre|All files (*.*)|*.*"; od.Title = "Select Presentation State File"; if (od.ShowDialog() == System.Windows.Forms.DialogResult.OK) { using (FileStream fileContent = new FileStream(od.FileName, FileMode.Open)) { ImGearPresStateOptions opts = new ImGearPresStateOptions(); presStateOrigMetadata = ImGearDICOM.LoadPresState(fileContent, (ImGearRasterPage)igPage, imGearPageView1.Display, opts); imGearPageView1.Update(); } } |
C# |
Copy Code |
---|---|
System.Windows.Forms.SaveFileDialog sd = new System.Windows.Forms.SaveFileDialog (); sd.Filter = "Presentation State (*.pre)|*.pre|All files (*.*)|*.*"; sd.Title = "Save Presentation State File"; if (sd.ShowDialog() == System.Windows.Forms.DialogResult.OK) { using (FileStream fileContent = new FileStream(sd.FileName, FileMode.Create)) { if (igPage is ImGearRasterPage) { ImGearPresStateOptions opts = new ImGearPresStateOptions(); ImGearMetadataHead presStateMetadata = ImGearDICOM.PreparePresStateMetadata((ImGearRasterPage)igPage, imGearPageView1.Display, presStateOrigMetadata, opts); // Note: The application can edit presStateMetadata here ImGearDICOM.SavePresState(fileContent, presStateMetadata); } } } |
C# |
Copy Code |
---|---|
// Delete presStateOrigMetadata if any presStateOrigMetadata = null; |