IncrementGraphicGroupId Method

Summary
Increments the GraphicGroupId to a new,unused value that can be assigned to the next group.
Syntax
C#
C++/CLI
public int IncrementGraphicGroupId() 
public: 
int IncrementGraphicGroupId();  

Return Value

The new value for GraphicGroupId.

Remarks

Certain LEAD Leadtools.Annotations.Engine.AnnObject are converted to two or more Leadtools.Dicom.DicomAnnotationObject, which are then "grouped" together. The DicomAnnotationsUtilities class maintains a GraphicGroupId that is used for each generated group. Once a GraphicGroupId is assigned to a group, it must no longer be used. The IncrementGraphicGroupId function is used to increment to the next unused value. The default behavior of this function is to add one to the previous GraphicGroupId, but this behavior can be changed by subscribing to the OnIncrementGraphicGroupId event, and changing the value of GraphicGroupId.

Example
C#
using Leadtools; 
using Leadtools.Dicom; 
using Leadtools.Dicom.Annotations; 
using Leadtools.Annotations; 
using Leadtools.Annotations.Engine; 
 
private void DicomAnnotationsUtilities_FromAnnContainerToDataSet(DicomDataSet dsImage, string outfilePresentationState) 
{ 
   // Create an AnnRectangleObject (rotated, filled) 
   AnnRectangleObject rectangleObject = new AnnRectangleObject(); 
   rectangleObject.Stroke.Stroke = AnnSolidColorBrush.Create("red"); 
   rectangleObject.Fill = AnnSolidColorBrush.Create("blue"); 
   rectangleObject.Points.Add(GetLeadPointD(100, 100)); 
   rectangleObject.Points.Add(GetLeadPointD(200, 100)); 
   rectangleObject.Points.Add(GetLeadPointD(200, 200)); 
   rectangleObject.Points.Add(GetLeadPointD(100, 200)); 
   rectangleObject.Rotate(45.0, GetLeadPointD(150, 150)); 
 
   // Create a pointer object 
   AnnPolylineObject polylineObject = new AnnPolylineObject(); 
   polylineObject.Stroke.Stroke = AnnSolidColorBrush.Create("red"); 
   polylineObject.Points.Clear(); 
   polylineObject.Points.Add(GetLeadPointD(300, 100)); 
   polylineObject.Points.Add(GetLeadPointD(400, 200)); 
 
   // Create a ruler object 
   AnnPolyRulerObject polyRulerObject = new AnnPolyRulerObject(); 
   polyRulerObject.Stroke.Stroke = AnnSolidColorBrush.Create("green"); 
   polyRulerObject.Points.Add(GetLeadPointD(100, 300)); 
   polyRulerObject.Points.Add(GetLeadPointD(200, 400)); 
   polyRulerObject.Points.Add(GetLeadPointD(300, 300)); 
 
   // Add them to the AnnContainer 
   AnnContainer annContainer = new AnnContainer(); 
   annContainer.Mapper = new AnnContainerMapper(96, 96, 96, 96); 
   annContainer.Children.Add(rectangleObject); 
   annContainer.Children.Add(polylineObject); 
   annContainer.Children.Add(polyRulerObject); 
 
   // Create a DicomDataSet 
   DicomDataSet dsPS = new DicomDataSet(); 
   dsPS.Initialize(DicomClassType.GrayscaleSoftcopyPresentationState, DicomDataSetInitializeFlags.AddMandatoryModulesOnly | DicomDataSetInitializeFlags.AddMandatoryElementsOnly); 
 
   // Delete the empty referenced Series Sequence 
   DicomElement referencedSeriesSequence = dsPS.FindFirstElement(null, DicomTag.ReferencedSeriesSequence, true); 
   if (referencedSeriesSequence != null) 
   { 
      dsPS.DeleteElement(referencedSeriesSequence); 
   } 
 
   // Add a new Referenced Series Sequence 
   dsPS.AddPresentationStateImageReference(dsImage, null, 0); 
 
   // Set up the DicomAnnotationsUtilities converter 
   DicomAnnotationsUtilities du = new DicomAnnotationsUtilities(); 
   du.ContainerMapper = annContainer.Mapper; 
   du.DefaultObject = new DicomTextObject(); 
   du.ImageDpiX = 96.0; 
   du.ImageDpiY = 96.0; 
   du.DisplayWidth = 200; 
   du.DisplayHeight = 200; 
   du.LayerName = "Layer 0"; 
 
   du.OnIncrementGraphicGroupId += new EventHandler(du_OnIncrementGraphicGroupId); 
   du.OnIncrementCompoundGraphicInstanceId += new EventHandler(du_OnIncrementCompoundGraphicInstanceId); 
 
 
   // Convert LEAD annotations to DICOM annotations 
   DicomElement graphicAnnSequenceItem = du.FromAnnContainerToDataSet(dsPS, annContainer); 
 
   // Save the presentation state 
   dsPS.Save(outfilePresentationState, DicomDataSetSaveFlags.None); 
 
   // Now you can convert the presentation state dataset back to an AnnContainer 
   AnnContainer annContainerNew = du.FromDataSetToAnnContainer(dsPS, graphicAnnSequenceItem); 
 
   Console.WriteLine("Presentation State Saved: " + outfilePresentationState); 
 
   // There should be three objects 
   Assert.IsTrue(annContainerNew.Children.Count == 3, $"There should be three objects, but there are {annContainerNew.Children.Count}"); 
 
} 
 
LeadPointD GetLeadPointD(double x, double y) 
{ 
   double imageDpi = 96.0; 
   return new LeadPointD(x * 720.0 / imageDpi, y * 720.0 / imageDpi); 
} 
 
// Override the default behavior of IncrementGraphicGroupId 
void du_OnIncrementGraphicGroupId(object sender, EventArgs e) 
{ 
   DicomAnnotationsUtilities du = sender as DicomAnnotationsUtilities; 
   if (du != null) 
   { 
      du.GraphicGroupId = du.GraphicGroupId + 2; 
   } 
} 
 
// Override the default behavior of IncrementGraphicInstanceId 
void du_OnIncrementCompoundGraphicInstanceId(object sender, EventArgs e) 
{ 
   DicomAnnotationsUtilities du = sender as DicomAnnotationsUtilities; 
   if (du != null) 
   { 
      du.CompoundGraphicInstanceId = du.CompoundGraphicInstanceId + 10; 
   } 
} 
Requirements

Target Platforms

Help Version 22.0.2023.1.26
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Dicom.Annotations Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.