Products | Support | Email a link to this topic. | Send comments on this topic. | Back to Introduction - All Topics | Help Version 19.0.5.7
|
Leadtools.Dicom.Annotations.Core Namespace > DicomAnnotationsUtilities Class > FromAnnContainerToDataSet Method : FromAnnContainerToDataSet(DicomDataSet,DicomElement,AnnContainer) Method |
public DicomElement FromAnnContainerToDataSet( DicomDataSet ds, DicomElement graphicAnnotationSequenceItem, AnnContainer annContainer )
'Declaration Public Overloads Function FromAnnContainerToDataSet( _ ByVal ds As DicomDataSet, _ ByVal graphicAnnotationSequenceItem As DicomElement, _ ByVal annContainer As AnnContainer _ ) As DicomElement
'Usage Dim instance As DicomAnnotationsUtilities Dim ds As DicomDataSet Dim graphicAnnotationSequenceItem As DicomElement Dim annContainer As AnnContainer Dim value As DicomElement value = instance.FromAnnContainerToDataSet(ds, graphicAnnotationSequenceItem, annContainer)
public: DicomElement^ FromAnnContainerToDataSet( DicomDataSet^ ds, DicomElement^ graphicAnnotationSequenceItem, AnnContainer^ annContainer )
This example does the following:
Imports Leadtools Imports Leadtools.Dicom Imports Leadtools.Dicom.Annotations.Core Imports Leadtools.Annotations.Core Private Sub DicomAnnotationsUtilities_FromAnnContainerToDataSet(ByVal dsImage As DicomDataSet, ByVal outfilePresentationState As String) ' Create an AnnRectangleObject (rotated, filled) Dim rectangleObject As 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 Dim pointerObject As New AnnPointerObject() pointerObject.Stroke.Stroke = AnnSolidColorBrush.Create("red") pointerObject.Points.Clear() pointerObject.Points.Add(GetLeadPointD(300, 100)) pointerObject.Points.Add(GetLeadPointD(400, 200)) pointerObject.PointerPosition = AnnPointerPosition.End ' Create a ruler object Dim polyRulerObject As 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 Dim annContainer As New AnnContainer() annContainer.Mapper = New AnnContainerMapper(96, 96, 96, 96) annContainer.Children.Add(rectangleObject) annContainer.Children.Add(pointerObject) annContainer.Children.Add(polyRulerObject) ' Create a DicomDataSet Dim dsPS As New DicomDataSet() dsPS.Initialize(DicomClassType.GrayscaleSoftcopyPresentationState, DicomDataSetInitializeFlags.AddMandatoryModulesOnly Or DicomDataSetInitializeFlags.AddMandatoryElementsOnly) ' Delete the empty referenced Series Sequence Dim referencedSeriesSequence As DicomElement = dsPS.FindFirstElement(Nothing, DicomTag.ReferencedSeriesSequence, True) If referencedSeriesSequence IsNot Nothing Then dsPS.DeleteElement(referencedSeriesSequence) End If ' Add a new Referenced Series Sequence dsPS.AddPresentationStateImageReference(dsImage, Nothing, 0) ' Set up the DicomAnnotationsUtilities converter Dim du As 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" AddHandler du.OnIncrementGraphicGroupId, AddressOf du_OnIncrementGraphicGroupId AddHandler du.OnIncrementCompoundGraphicInstanceId, AddressOf du_OnIncrementCompoundGraphicInstanceId ' Convert LEAD annotations to DICOM annotations Dim graphicAnnSequenceItem As DicomElement = 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 Dim annContainerNew As AnnContainer = du.FromDataSetToAnnContainer(dsPS, graphicAnnSequenceItem) ' There should be three objects Debug.Assert(annContainerNew.Children.Count = 3) MessageBox.Show("Presentation State Saved: " & outfilePresentationState) End Sub Private Function GetLeadPointD(ByVal x As Double, ByVal y As Double) As LeadPointD Dim imageDpi As Double = 96.0 Return New LeadPointD(x * 720.0 / imageDpi, y * 720.0 / imageDpi) End Function ' Override the default behavior of IncrementGraphicGroupId Private Sub du_OnIncrementGraphicGroupId(ByVal sender As Object, ByVal e As EventArgs) Dim du As DicomAnnotationsUtilities = TryCast(sender, DicomAnnotationsUtilities) If du IsNot Nothing Then du.GraphicGroupId = du.GraphicGroupId + 2 End If End Sub ' Override the default behavior of IncrementGraphicInstanceId Private Sub du_OnIncrementCompoundGraphicInstanceId(ByVal sender As Object, ByVal e As EventArgs) Dim du As DicomAnnotationsUtilities = TryCast(sender, DicomAnnotationsUtilities) If du IsNot Nothing Then du.CompoundGraphicInstanceId = du.CompoundGraphicInstanceId + 10 End If End Sub
using Leadtools; using Leadtools.Dicom; using Leadtools.Dicom.Annotations.Core; using Leadtools.Annotations.Core; 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 AnnPointerObject pointerObject = new AnnPointerObject(); pointerObject.Stroke.Stroke = AnnSolidColorBrush.Create("red"); pointerObject.Points.Clear(); pointerObject.Points.Add(GetLeadPointD(300, 100)); pointerObject.Points.Add(GetLeadPointD(400,200)); pointerObject.PointerPosition = AnnPointerPosition.End; // 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(pointerObject); 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); // There should be three objects Debug.Assert(annContainerNew.Children.Count == 3); MessageBox.Show("Presentation State Saved: " + outfilePresentationState); } 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; } }