Getting the attributes and bitmaps for all overlays inside a DICOM dataset Example for VB.NET

'LEADDICOM1 is a DICOM Dataset defined outside this method
'This example uses the predefined variable "LEADRasterView1" of type "AxLEADRasterView" from "LEADTOOLS Toolkit".
'This example uses the predefined variable "LEADRasterView2" of type "AxLEADRasterView" from "LEADTOOLS Toolkit".
Private Sub GettingAttributesAndBitmapsForAllOverlaysInsideDICOMDataset()
   ' This example will extract the overlays from a
   ' DICOM dataset and associate them with a bitmap,
   ' the bitmap is assumed to be extracted from the
   ' same DICOM dataset.
   Dim iRet As Short
   Dim lOverlayCount As Integer
   Dim lOverlayIndex As Integer
   Dim OverlayAttributesDS As LTRASTERPROCLib.LEADOverlayAttributes
   Dim OverlayAttributesRaster As LTRASTERPROCLib.LEADOverlayAttributes
   Dim RasterProcess As New LTRASTERPROCLib.LEADRasterProcess
   Dim GroupNumber As Integer
   Dim bIsOverlayInDataSet As Boolean
   Dim iLEADOverlayIndex As Short
   Dim lFlags As Integer
   Dim crColor As Integer
   lOverlayCount = 0
   lOverlayIndex = 0
   GroupNumber = 0
   bIsOverlayInDataSet = False
   iLEADOverlayIndex = 0
   lFlags = 0

   LEADDICOM1.GetBitmapValue(0, 0, LTDICLib.DicomColorOrderConstants.ORDER_BGRORGRAY, 0)
   LEADRasterView1.Raster.Bitmap = LEADDICOM1.Bitmap

   ' Do we have any overlays at all?
   lOverlayCount = LEADDICOM1.OverlayCount
   If (lOverlayCount = 0) Then
      Exit Sub
   End If

   ' Go through the overlays one by one
   lOverlayIndex = 0
   iLEADOverlayIndex = 0
   ' Reset the overlay bitmap
   If (LEADRasterView2.Raster.Bitmap > 0) Then
      LEADRasterView2.Raster.Free()
   End If
   LEADRasterView2.Raster.CreateBitmap(1, 1, 1)
   While (lOverlayIndex < lOverlayCount)
      NEXTINDEX:
      GroupNumber = 0
      bIsOverlayInDataSet = False
      lFlags = 0
      ' Get the attributes of this overlay
      iRet = LEADDICOM1.GetOverlayAttributes(lOverlayIndex, 0)
      If (iRet <> 0) Then
         MessageBox.Show("error")
         Exit Sub
      End If
      GroupNumber = LEADDICOM1.OverlayGroupNumber(lOverlayIndex, 0)
      bIsOverlayInDataSet = LEADDICOM1.IsOverlayInDataSet(lOverlayIndex, 0)

      If (bIsOverlayInDataSet = False) Then
         lOverlayIndex = lOverlayIndex + 1
         GoTo NEXTINDEX
      End If

      OverlayAttributesDS = LEADDICOM1.OverlayAttributes
      OverlayAttributesRaster = RasterProcess.OverlayAttributes

      ' Auto paint and process overlays
      lFlags = OverlayAttributesDS.Flags
      lFlags = lFlags Or LTRASTERPROCLib.OverlayAttributesFlagsConstants.OVERLAY_AUTOPAINT Or LTRASTERPROCLib.OverlayAttributesFlagsConstants.OVERLAY_AUTOPROCESS
      OverlayAttributesRaster.Flags = lFlags
      OverlayAttributesRaster.OriginX = OverlayAttributesDS.OriginX
      OverlayAttributesRaster.OriginY = OverlayAttributesDS.OriginY
      crColor = System.Drawing.ColorTranslator.ToOle(System.Drawing.Color.White)
      OverlayAttributesRaster.Color = System.Convert.ToUInt32(crColor)
      OverlayAttributesRaster.BitPosition = OverlayAttributesDS.BitPosition
      OverlayAttributesRaster.Rows = OverlayAttributesDS.Rows
      OverlayAttributesRaster.Columns = OverlayAttributesDS.Columns
      OverlayAttributesRaster.Type = OverlayAttributesDS.Type
      OverlayAttributesRaster.BitsAllocated = OverlayAttributesDS.BitsAllocated
      OverlayAttributesRaster.Subtype = OverlayAttributesDS.Subtype
      OverlayAttributesRaster.Label = OverlayAttributesDS.Label
      OverlayAttributesRaster.ROIArea = OverlayAttributesDS.ROIArea
      OverlayAttributesRaster.ROIMean = OverlayAttributesDS.ROIMean
      OverlayAttributesRaster.ROIStandardDeviation = OverlayAttributesDS.ROIStandardDeviation
      OverlayAttributesRaster.NumberFramesInOverlay = OverlayAttributesDS.NumberFramesInOverlay
      OverlayAttributesRaster.ImageFrameOrigin = OverlayAttributesDS.ImageFrameOrigin
      OverlayAttributesRaster.ActivationLayer = OverlayAttributesDS.ActivationLayer
      OverlayAttributesRaster.Description = OverlayAttributesDS.Description

      iRet = RasterProcess.SetOverlayAttributes(LEADRasterView1.Raster, iLEADOverlayIndex, 0)
      If (iRet <> 0) Then
         MessageBox.Show("error")
         Exit Sub
      End If

      ' Is the overlay embedded inside the image data ?
      lFlags = OverlayAttributesDS.Flags
      If (lFlags And LTRASTERPROCLib.OverlayAttributesFlagsConstants.OVERLAY_USEBITPLANE) Then
         ' Add this overlay to the list of overlays in the bitmap handle
         iRet = RasterProcess.SetOverlayAttributes(LEADRasterView1.Raster, iLEADOverlayIndex, LTRASTERPROCLib.OverlayAttributesConstants.OVERLAYATTRIBUTES_FLAGS Or LTRASTERPROCLib.OverlayAttributesConstants.OVERLAYATTRIBUTES_BITINDEX Or LTRASTERPROCLib.OverlayAttributesConstants.OVERLAYATTRIBUTES_ORIGIN Or LTRASTERPROCLib.OverlayAttributesConstants.OVERLAYATTRIBUTES_DICOM Or LTRASTERPROCLib.OverlayAttributesConstants.OVERLAYATTRIBUTES_COLOR)
         If (iRet <> 0) Then
            MessageBox.Show("error")
            Exit Sub
         End If

         ' Make sure to extract the overlay data from the image data
         iRet = RasterProcess.UpdateOverlayBits(LEADRasterView1.Raster, iLEADOverlayIndex, LTRASTERPROCLib.OverlayBitsConstants.SETOVERLAYBITS_FROMBITMAP)
         If (iRet <> 0) Then
            MessageBox.Show("error")
            Exit Sub
         End If
         ' The overlay is inside overlay data Else
         ' Add this overlay to the list of overlays in the bitmap handle
         iRet = RasterProcess.SetOverlayAttributes(LEADRasterView1.Raster, iLEADOverlayIndex, LTRASTERPROCLib.OverlayAttributesConstants.OVERLAYATTRIBUTES_FLAGS Or LTRASTERPROCLib.OverlayAttributesConstants.OVERLAYATTRIBUTES_ORIGIN Or LTRASTERPROCLib.OverlayAttributesConstants.OVERLAYATTRIBUTES_DICOM Or LTRASTERPROCLib.OverlayAttributesConstants.OVERLAYATTRIBUTES_COLOR)
         If (iRet <> 0) Then
            MessageBox.Show("error")
            Exit Sub
         End If
         ' Get the overlay bitmap from the overlay data
         iRet = LEADDICOM1.GetOverlayBitmap(lOverlayIndex, 0)
         If (iRet <> 0) Then
            MessageBox.Show("error")
            Exit Sub
         End If
         ' store it temp. in RasterView2
         If (LEADRasterView2.Raster.Bitmap > 0) Then
            LEADRasterView2.Raster.Free()
         End If
         LEADRasterView2.Raster.Bitmap = LEADDICOM1.OverlayBitmap
         ' Set the bitmap for this overlay inside the ' list of overlays we have in the bitmap handle
         iRet = RasterProcess.SetOverlayBitmap(LEADRasterView1.Raster, iLEADOverlayIndex, LEADRasterView2.Raster, LTRASTERPROCLib.OverlayConstants.OVERLAY_COPY)
         If (iRet <> 0) Then
            MessageBox.Show("error")
            Exit Sub
         End If
      End If
      lOverlayIndex = lOverlayIndex + 1
      iLEADOverlayIndex = iLEADOverlayIndex + 1
   End While
End Sub