ImageGear for .NET
Adding DICOM Support

Once the base of the tutorial application is completed, you can extend it with DICOM support using the following steps:

  1. First, you need to add a reference to the ImageGear for .NET DICOM Assembly.
    1. In the Solution Explorer, right-click on References, and choose Add Reference.
    2. Choose the Browse tab, navigate to "ImageGear for .NET v21\Bin" directory.
    3. Select ImageGear21.Formats.Dicom.dll, and click OK.

    You should now have the ImageGear21.Formats.Dicom assembly listed under References in the Solution Explorer.

  2. Next, add the DICOM using statement. Open the code for Form1.cs by right-clicking on the form and clicking View Code. At the top of the code add the following statement:

    C#
    Copy Code
    using ImageGear.Formats.DICOM;
  3. Add the following statements in Form1 constructor after the ImGearCommonFormats.Initialize() call:
    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.

  4. To add support for DICOM documents, the following changes should be made:
    1. Under the File menu, add the Load Document menu item. Double-click it to create a handler.
    2. Copy the code from the Load Page menu handler for the Load Document menu handler.
    3. Add the following field to Form1:
      C#
      Copy Code
      private ImGearDocument imGearDocument = null;
    4. In loadDocumentToolStripMenuItem_Click find the following code:
      C#
      Copy Code
      imGearPage = ImGearFileFormats.LoadPage(stream, 0);
      and replace it with:
      C#
      Copy Code
      imGearDocument = ImGearFileFormats.LoadDocument(stream, 0, 1);
      imGearPage = 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.

  5. To add support for loading/saving overlays, the following changes should be made:
    1. First, you need to add a reference to the ImageGear ART assembly (ImageGear21.Art).
    2. Next, add the corresponding using statement:
      C#
      Copy Code
      using ImageGear.ART;
    3. Then declare the following member variable:
      C#
      Copy Code
      private ImGearARTPage artPage;
    4. Modify the code of loadDocumentToolStripMenuItem_Click event handler, adding the following right before the imGearPageView1.Invalidate() call:
      C#
      Copy Code
      if (artPage != null)
        {
         artPage.RemoveMarks();
        }
        // DICOM overlays
        artPage = ImGearDICOM.LoadOverlay(imGearPage);
        if (artPage == null)
        {
         artPage = new ImGearARTPage();
        }
        imGearPageView1.Display.ARTPage = artPage;

      This will enable displaying overlays after loading the DICOM page.

    5. To enable saving overlays, the following statement should be added right before saving the page into file:
      C#
      Copy Code
      ImGearDICOM.SaveOverlay((imGearPageView1.Display.ARTPage as ImGearARTPage), imGearPageView1.Display.Page as ImGearRasterPage);
  6. To add support for loading/saving presentation state, the following changes should be made:
    1. Repeat steps from 5a - 5e, excluding:
      C#
      Copy Code
      artPage = ImGearDICOM.LoadOverlay(imGearPage);
    2. Declare the following member variable:
      C#
      Copy Code
      private ImGearMetadataHead presStateOrigMetadata;
    3. Create "Load Presentation State" and "Save Presentation State" menu items under the File menu, then double-click them to create menu item handlers.
    4. Add the following code for the "Load Presentation State" menu item handler:
      C#
      Copy Code
      if (!(imGearPage is ImGearRasterPage))
        {
         return;
        }
        OpenFileDialog od = new OpenFileDialog();
        od.Filter = "Presentation State (*.pre)|*.pre|All files (*.*)|*.*";
        od.Title = "Select Presentation State File";
        if (od.ShowDialog(this) == DialogResult.OK)
        {
         using (FileStream fileContent = new FileStream(od.FileName, FileMode.Open))
         {
          ImGearPresStateOptions opts = new ImGearPresStateOptions();
          presStateOrigMetadata = ImGearDICOM.LoadPresState(fileContent, (ImGearRasterPage)imGearPage, imGearPageView1.Display, opts);
          artPage = imGearPageView1.Display.ARTPage as ImGearARTPage;
          imGearPageView1.Update();
         }
        }
    5. Add the following code for the "Save Presentation State" menu item handler:
      C#
      Copy Code
      SaveFileDialog sd = new SaveFileDialog();
        sd.Filter = "Presentation State (*.pre)|*.pre|All files (*.*)|*.*";
        sd.Title = "Save Presentation State File";
        if (sd.ShowDialog(this) == DialogResult.OK)
        {
         using (FileStream fileContent = new FileStream(sd.FileName, FileMode.Create))
         {
          if (imGearPage is ImGearRasterPage)
          {
           ImGearPresStateOptions opts = new ImGearPresStateOptions();
           ImGearMetadataHead presStateMetadata =
             ImGearDICOM.PreparePresStateMetadata((ImGearRasterPage)imGearPage,
            imGearPageView1.Display,
      presStateOrigMetadata, opts);
           // Note: The application can edit presStateMetadata here
           ImGearDICOM.SavePresState(fileContent, presStateMetadata);
          }
         }
        }
    6. And then add the following statement in the "Load Page" menu item handler's code, right before the imGearPageView1.Invalidate() statement:
      C#
      Copy Code
        // Delete presStateOrigMetadata if any
        presStateOrigMetadata = null;

 

 


©2015. Accusoft Corporation. All Rights Reserved.

Send Feedback