Leadtools.Dicom Requires Medical product license | Send comments on this topic. | Back to Introduction - All Topics | Help Version 15.10.31
FindFirstGraphicAnnSQItem Method
See Also  Example
Leadtools.Dicom Namespace > DicomDataSet Class : FindFirstGraphicAnnSQItem Method




Retrieves the first item under the "Graphic Annotation Sequence" (0070,0001) in the "Graphic Annotation Module".

Syntax

Visual Basic (Declaration) 
Public Function FindFirstGraphicAnnSQItem() As DicomElement
Visual Basic (Usage)Copy Code
Dim instance As DicomDataSet
Dim value As DicomElement
 
value = instance.FindFirstGraphicAnnSQItem()
C# 
public DicomElement FindFirstGraphicAnnSQItem()
Managed Extensions for C++ 
public: DicomElement* FindFirstGraphicAnnSQItem(); 
C++/CLI 
public:
DicomElement^ FindFirstGraphicAnnSQItem(); 

Return Value

The first item under the "Graphic Annotation Sequence" (0070,0001) in the "Graphic Annotation Module". null if No items were found.

Example

This example will initialize a new DICOM dataset, cerate a graphic annotation sequence and add a graphic object and text object under that sequence.

Visual BasicCopy Code
Public Sub GraphicAnnSequenceSample()
    'Make sure to initialize the DICOM engine, this needs to be done only once
    'In the whole application
    DicomEngine.Startup()

    Dim dicomDataset As DicomDataSet = New DicomDataSet()
      Using (dicomDataset)
         ' We can also initialize in here the "Grayscale Softcopy Presentation State" class
         dicomDataset.Initialize(DicomClassType.Undefined, DicomDataSetInitializeType.ExplicitVRLittleEndian)

         dicomDataset.CreateGraphicAnnSQItem(0, "Layer0")
         Dim firstGraphicAnnSQItem As DicomElement = dicomDataset.FindFirstGraphicAnnSQItem()
         Debug.Assert(Not firstGraphicAnnSQItem Is Nothing)
         'If there was more than one item we can use
         'FindNextGraphicAnnSQItem to enumerate these items

         dicomDataset.SetLayerName(firstGraphicAnnSQItem, "Layer1")
         Debug.Assert(dicomDataset.GetLayerName(firstGraphicAnnSQItem) = "Layer1")

         ' We can also call RemoveAllImageRefFromAllLayers or call
         ' RemoveImageRefFromLayer to remove the referenced images one by one.
         ' In any case this is for demonstration purposes only, since the dataset
         ' doesn�t have any referenced images right now.
         dicomDataset.RemoveAllImageReferencesFromLayer(firstGraphicAnnSQItem)

         dicomDataset.AddPresentationStateImageReference("C:\Program Files\LEAD Technologies, Inc\LEADTOOLS 14.5\Images\IMAGE2.dic", Nothing, 0)
         ' We know that the SOP instance UID for the dataset IMAGE2.dic is
         ' 1.2.840.114257.3.6.5.5.18900282
         dicomDataset.AddLayerImageReference(firstGraphicAnnSQItem, "1.2.840.114257.3.6.5.5.18900282")
         Debug.Assert(dicomDataset.GetLayerImageReferenceCount(firstGraphicAnnSQItem) = 1)
         Debug.Assert(dicomDataset.GetLayerImageReferenceSOPInstance(firstGraphicAnnSQItem, 0) = "1.2.840.114257.3.6.5.5.18900282")
         Debug.Assert(Not dicomDataset.GetLayerImageReferenceElement(firstGraphicAnnSQItem, "1.2.840.114257.3.6.5.5.18900282") Is Nothing)

         '//////This section is for DICOM Graphic Object///////////////////

         Dim graphicObject As DicomGraphicObject = New DicomGraphicObject()
         Dim annotationPoints As DicomAnnotationPoint() = New DicomAnnotationPoint(4) {}
         annotationPoints(0).X = 480.0F
         annotationPoints(0).Y = 226.0F
         annotationPoints(1).X = 480.0F
         annotationPoints(1).Y = 418.0F
         annotationPoints(2).X = 488.0F
         annotationPoints(2).Y = 418.0F
         annotationPoints(3).X = 488.0F
         annotationPoints(3).Y = 226.0F
         annotationPoints(4).X = 480.0F
         annotationPoints(4).Y = 226.0F
         graphicObject.SetAnnotationPoints(annotationPoints, 5)
         graphicObject.Filled = False
         graphicObject.Type = DicomAnnotationType.Polyline
         graphicObject.LayerName = "Layer1"
         graphicObject.Units = DicomAnnotationUnitsRelativityType.Pixel
         Debug.Assert(graphicObject.AnnotationPointCount = 5)

         'Start Clean!
         'Can also call RemoveGraphicObject to remove individual objects
         dicomDataset.RemoveAllGraphicObjects(firstGraphicAnnSQItem)

         dicomDataset.CreateGraphicObject(firstGraphicAnnSQItem, graphicObject, False)
         Debug.Assert(dicomDataset.GetGraphicObjectCount(firstGraphicAnnSQItem) = 1)
         Debug.Assert(Not dicomDataset.GetGraphicObjElement(firstGraphicAnnSQItem, 0) Is Nothing)
         Debug.Assert(dicomDataset.GetGraphicObjPointCount(firstGraphicAnnSQItem, 0) = 5)

         Dim graphicObject1 As DicomGraphicObject = dicomDataset.GetGraphicObjectInformation(firstGraphicAnnSQItem, 0)
         Debug.Assert(Not graphicObject1 Is Nothing)
         graphicObject1.Filled = True
         dicomDataset.SetGraphicObjectInformation(firstGraphicAnnSQItem, 0, graphicObject1)


         '//////This section is for DICOM Text Object///////////////////
         'Can also call RemoveTextObject to remove individual objects
         dicomDataset.RemoveAllTextObjects(firstGraphicAnnSQItem)

         Dim textObject As DicomTextObject = New DicomTextObject()
         textObject.AnchorPointVisible = True
         textObject.AnchorPoint = New DicomAnnotationPoint(1.1F, 1.1F)
         textObject.BRHCorner = New DicomAnnotationPoint(521.251343F, 328.190216F)
         textObject.TLHCorner = New DicomAnnotationPoint(466.642242F, 300.443268F)
         textObject.TextValue = "Text Value 1"
         textObject.AnchorPointUnits = DicomAnnotationUnitsRelativityType.Pixel
         textObject.BoundingBoxUnits = DicomAnnotationUnitsRelativityType.Pixel
         textObject.LayerName = "Layer1"
         textObject.TextJustification = TextAnnotationJustificationType.Left

         dicomDataset.CreateTextObject(firstGraphicAnnSQItem, textObject, False)
         Debug.Assert(dicomDataset.GetTextObjectCount(firstGraphicAnnSQItem) = 1)
         Debug.Assert(Not dicomDataset.GetTextObjElement(firstGraphicAnnSQItem, 0) Is Nothing)

         Dim textObject1 As DicomTextObject = dicomDataset.GetTextObjectInformation(firstGraphicAnnSQItem, 0)
         Debug.Assert(Not textObject1 Is Nothing)
         textObject1.TextJustification = TextAnnotationJustificationType.Right
         dicomDataset.SetTextObjectInformation(firstGraphicAnnSQItem, 0, textObject1)


         dicomDataset.Save("C:\GraphicAnnSequence.dic", DicomDataSetSaveFlags.None)
      End Using

      DicomEngine.Shutdown()
   End Sub
C#Copy Code
public void GraphicAnnSequenceSample() 

   //Make sure to initialize the DICOM engine, this needs to be done only once  
   //In the whole application 
   DicomEngine.Startup(); 
   using (DicomDataSet dicomDataset = new DicomDataSet()) 
   { 
      // We can also initialize in here the "Grayscale Softcopy Presentation State" class 
      dicomDataset.Initialize(DicomClassType.Undefined, DicomDataSetInitializeType.ExplicitVRLittleEndian); 
 
      dicomDataset.CreateGraphicAnnSQItem(0, "Layer0"); 
      DicomElement firstGraphicAnnSQItem = dicomDataset.FindFirstGraphicAnnSQItem(); 
      Debug.Assert(firstGraphicAnnSQItem != null); 
      //If there was more than one item we can use  
      //FindNextGraphicAnnSQItem to enumerate these items 
 
      dicomDataset.SetLayerName(firstGraphicAnnSQItem, "Layer1"); 
      Debug.Assert(dicomDataset.GetLayerName(firstGraphicAnnSQItem) == "Layer1"); 
 
      // We can also call RemoveAllImageRefFromAllLayers or call  
      // RemoveImageRefFromLayer to remove the referenced images one by one. 
      // In any case this is for demonstration purposes only, since the dataset 
      // doesn�t have any referenced images right now. 
      dicomDataset.RemoveAllImageReferencesFromLayer(firstGraphicAnnSQItem); 
 
      dicomDataset.AddPresentationStateImageReference(@"C:\Program Files\LEAD Technologies, Inc\LEADTOOLS 14.5\Images\IMAGE2.dic", null, 0); 
      // We know that the SOP instance UID for the dataset IMAGE2.dic is 
      // 1.2.840.114257.3.6.5.5.18900282 
      dicomDataset.AddLayerImageReference(firstGraphicAnnSQItem, "1.2.840.114257.3.6.5.5.18900282"); 
      Debug.Assert(dicomDataset.GetLayerImageReferenceCount(firstGraphicAnnSQItem) == 1); 
      Debug.Assert(dicomDataset.GetLayerImageReferenceSOPInstance(firstGraphicAnnSQItem, 0) == "1.2.840.114257.3.6.5.5.18900282"); 
      Debug.Assert(dicomDataset.GetLayerImageReferenceElement(firstGraphicAnnSQItem, "1.2.840.114257.3.6.5.5.18900282") != null); 
 
      ////////This section is for DICOM Graphic Object/////////////////// 
 
      DicomGraphicObject graphicObject = new DicomGraphicObject(); 
      DicomAnnotationPoint[] annotationPoints = new DicomAnnotationPoint[5]; 
      annotationPoints[0].X=  480.00F; 
      annotationPoints[0].Y = 226.00F; 
      annotationPoints[1].X = 480.00F; 
      annotationPoints[1].Y = 418.00F; 
      annotationPoints[2].X = 488.00F; 
      annotationPoints[2].Y = 418.00F; 
      annotationPoints[3].X = 488.00F; 
      annotationPoints[3].Y = 226.00F; 
      annotationPoints[4].X = 480.00F; 
      annotationPoints[4].Y = 226.00F; 
      graphicObject.SetAnnotationPoints(annotationPoints, 5); 
      graphicObject.Filled = false; 
      graphicObject.Type= DicomAnnotationType.Polyline; 
      graphicObject.LayerName = "Layer1"; 
      graphicObject.Units = DicomAnnotationUnitsRelativityType.Pixel; 
      Debug.Assert(graphicObject.AnnotationPointCount == 5); 
 
      //Start Clean! 
      //Can also call RemoveGraphicObject to remove individual objects 
      dicomDataset.RemoveAllGraphicObjects(firstGraphicAnnSQItem); 
 
      dicomDataset.CreateGraphicObject(firstGraphicAnnSQItem, graphicObject, false); 
      Debug.Assert(dicomDataset.GetGraphicObjectCount(firstGraphicAnnSQItem) ==1); 
      Debug.Assert(dicomDataset.GetGraphicObjElement(firstGraphicAnnSQItem, 0) != null); 
      Debug.Assert(dicomDataset.GetGraphicObjPointCount(firstGraphicAnnSQItem, 0) ==5); 
 
      DicomGraphicObject graphicObject1 = dicomDataset.GetGraphicObjectInformation(firstGraphicAnnSQItem, 0); 
      Debug.Assert(graphicObject1 != null); 
      graphicObject1.Filled = true; 
      dicomDataset.SetGraphicObjectInformation(firstGraphicAnnSQItem, 0, graphicObject1); 
 
 
      ////////This section is for DICOM Text Object/////////////////// 
      //Can also call RemoveTextObject to remove individual objects 
      dicomDataset.RemoveAllTextObjects(firstGraphicAnnSQItem); 
 
      DicomTextObject textObject = new DicomTextObject(); 
      textObject.AnchorPointVisible = true; 
      textObject.AnchorPoint  = new DicomAnnotationPoint(1.1F, 1.1F); 
      textObject.BRHCorner    = new DicomAnnotationPoint(521.251343F, 328.190216F); 
      textObject.TLHCorner = new DicomAnnotationPoint(466.642242F, 300.443268F); 
      textObject.TextValue = "Text Value 1"; 
      textObject.AnchorPointUnits = DicomAnnotationUnitsRelativityType.Pixel; 
      textObject.BoundingBoxUnits = DicomAnnotationUnitsRelativityType.Pixel; 
      textObject.LayerName = "Layer1"; 
      textObject.TextJustification = TextAnnotationJustificationType.Left; 
 
      dicomDataset.CreateTextObject(firstGraphicAnnSQItem, textObject, false); 
      Debug.Assert(dicomDataset.GetTextObjectCount(firstGraphicAnnSQItem) == 1); 
      Debug.Assert(dicomDataset.GetTextObjElement(firstGraphicAnnSQItem, 0) != null); 
 
      DicomTextObject textObject1 = dicomDataset.GetTextObjectInformation(firstGraphicAnnSQItem, 0); 
      Debug.Assert(textObject1 != null); 
      textObject1.TextJustification = TextAnnotationJustificationType.Right; 
      dicomDataset.SetTextObjectInformation(firstGraphicAnnSQItem, 0, textObject1); 
 
 
      dicomDataset.Save(@"C:\GraphicAnnSequence.dic", DicomDataSetSaveFlags.None); 
   } 
   DicomEngine.Shutdown(); 
}

Remarks

This method returns the first item under the "Graphic Annotation Sequence" (0070,0001) in the "Graphic Annotation Module". Call this method along with FindNextGraphicAnnSQItem in order to enumerate all the items under the "Graphic Annotation Sequence" (0070,0001) in the "Graphic Annotation Module".

Requirements

Target Platforms: Microsoft .NET Framework 2.0, Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family

See Also

Leadtools.Dicom requires a Medical toolkit license and unlock key. For more information, refer to: Raster Pro/Document/Medical Features