The MedicalViewerSeriesStack represents a stack of images.
public class MedicalViewerSeriesStack Public Class MedicalViewerSeriesStack
public ref class MedicalViewerSeriesStack
This class is used for the output of the MedicalViewerSeriesManager.Sort method, which holds a sorted stack. Each image in the stack is sorted based on its actual real world position so it is displayed correctly. This also makes it easier for the 3D toolkit to create an accurate 3D object.
using Leadtools;using Leadtools.Dicom;using Leadtools.Medical3D;using Leadtools.Codecs;using Leadtools.MedicalViewer;using Leadtools.ImageProcessing;using Leadtools.ImageProcessing.Core;using Leadtools.ImageProcessing.Color;using Leadtools.Annotations.Core;using Leadtools.Annotations.Designers;class MedicalViewerSeriesManagerFrom : Form{DicomElement _studyElement;DicomElement _seriesElement;MedicalViewerSeriesManager _seriesManager;MedicalViewerSeriesManager _seriesManager512;List<MedicalViewerImageData> _imageDataList;double[] doubleArray;DicomElement patientElement;string referenceUID;DicomElement imageElement;MedicalViewer _medicalViewer;public MedicalViewerSeriesManagerFrom(){}void MedicalViewerSeriesManagerFrom_SizeChanged(object sender, EventArgs e){_medicalViewer.Size = new Size(this.ClientRectangle.Right, this.ClientRectangle.Bottom);}public MedicalViewerSeriesManagerFrom(MedicalViewerSeriesManager output){RasterCodecs _codecs = new RasterCodecs();this.SizeChanged += new EventHandler(MedicalViewerSeriesManagerFrom_SizeChanged);// Create the medical viewer and adjust the size and the location._medicalViewer = new MedicalViewer(1, 2);_medicalViewer.Location = new Point(0, 0);_medicalViewer.Size = new Size(this.ClientRectangle.Right, this.ClientRectangle.Bottom);_seriesManager = output;MedicalViewerMultiCell cell = new MedicalViewerMultiCell(null, true, 1, 1);int index;int count = output.Stacks[0].Items.Count;CodecsImageInfo codecsInformation;MedicalViewerImageInformation[] imageInformation = new MedicalViewerImageInformation[count];for (index = 0; index < count; index++){codecsInformation = _codecs.GetInformation((string)(output.Stacks[0].Items[index].Data), true);imageInformation[index] = new MedicalViewerImageInformation();imageInformation[index].ImageHeight = codecsInformation.Width;imageInformation[index].ImageWidth = codecsInformation.Width;imageInformation[index].XResolution = codecsInformation.XResolution;imageInformation[index].YResolution = codecsInformation.YResolution;}cell.FramesRequested += new EventHandler<MedicalViewerRequestedFramesInformationEventArgs>(cell_FramesRequested);FormClosing += new FormClosingEventHandler(MedicalViewerSeriesManagerFrom_FormClosing);cell.EnableLowMemoryUsage(2, count, imageInformation);_medicalViewer.Cells.Add(cell);cell.PixelSpacing = output.Stacks[0].PixelSpacing;cell.ImageOrientation = output.Stacks[0].Items[0].ImageOrientationArray;cell.FrameOfReferenceUID = output.Stacks[0].Items[0].FrameOfReferenceUID;for (index = 0; index < count; index++){cell.SetImagePosition(index, output.Stacks[0].Items[index].ImagePosition, (index == count - 1));}// add some actions that will be used to change the properties of the images inside the control.cell.AddAction(MedicalViewerActionType.WindowLevel);cell.AddAction(MedicalViewerActionType.Alpha);cell.AddAction(MedicalViewerActionType.Offset);cell.AddAction(MedicalViewerActionType.Stack);// assign the added actions to a mouse button, meaning that when the user clicks and drags the mouse button, the associated action will be activated.cell.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active);cell.SetAction(MedicalViewerActionType.Alpha, MedicalViewerMouseButtons.Middle, MedicalViewerActionFlags.Active);cell.SetAction(MedicalViewerActionType.Offset, MedicalViewerMouseButtons.Right, MedicalViewerActionFlags.Active);cell.SetAction(MedicalViewerActionType.Stack, MedicalViewerMouseButtons.Wheel, MedicalViewerActionFlags.Active);// adjust some properties of the cell and add some tags._medicalViewer.Cells[0].SetTag(2, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.UserData, "EX. ID 230-36-5448");_medicalViewer.Cells[0].SetTag(4, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Frame);_medicalViewer.Cells[0].SetTag(6, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Scale);_medicalViewer.Cells[0].SetTag(2, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.WindowLevelData);_medicalViewer.Cells[0].SetTag(1, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.FieldOfView);_medicalViewer.Cells[0].SetTag(1, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.UserData, "Echo number = " + output.Stacks[0].EchoNumber.ToString());Controls.Add(_medicalViewer);_medicalViewer.Dock = DockStyle.Fill;}void cell_FramesRequested(object sender, MedicalViewerRequestedFramesInformationEventArgs e){MedicalViewerMultiCell cell = (MedicalViewerMultiCell)(sender);RasterCodecs _codecs = new RasterCodecs();int i;RasterImage image;string fileName;if (e.RequestedFramesIndexes.Length > 0){fileName = (string)(_seriesManager.Stacks[0].Items[e.RequestedFramesIndexes[0]].Data);image = _codecs.Load(fileName);}elsereturn;for (i = 1; i < e.RequestedFramesIndexes.Length; i++){fileName = (string)(_seriesManager.Stacks[0].Items[e.RequestedFramesIndexes[i]].Data);image.AddPage(_codecs.Load(fileName));}cell.SetRequestedImage(image, e.RequestedFramesIndexes, MedicalViewerSetImageOptions.Insert);}void MedicalViewerSeriesManagerFrom_FormClosing(object sender, FormClosingEventArgs e){}// Find the study using the Study instance UID, and return it's DicomElement if the study is foundprivate DicomElement FindStudy(DicomDataSet ds, string studyInstanceUID){// get the parent element.DicomElement patientElement = ds.GetFirstKey(null, true);DicomElement studyElement = null;DicomElement studyInformationElement = null;string studyID;studyElement = ds.GetChildKey(patientElement);studyElement = ds.GetChildElement(studyElement, true);while (studyElement != null){studyInformationElement = ds.FindFirstElement(studyElement, DicomTag.StudyInstanceUID, true);if (studyInformationElement != null){studyID = ds.GetConvertValue(studyInformationElement);if (studyID == studyInstanceUID)return studyInformationElement;}studyElement = ds.GetNextKey(studyElement, true);studyElement = ds.GetChildElement(studyElement, true);}return null;}// Find the series using the Series instance UID, and return it's DicomElement if the series is foundprivate DicomElement FindSeries(DicomDataSet ds, DicomElement studyElement, string seriesInstanceUID){DicomElement seriesElement = null;DicomElement seriesInformationElement = null;string seriesID;seriesElement = ds.GetChildKey(studyElement);seriesElement = ds.GetChildElement(seriesElement, true);while (seriesElement != null){seriesInformationElement = ds.FindFirstElement(seriesElement,DicomTag.SeriesInstanceUID,true);if (seriesInformationElement != null){seriesID = ds.GetConvertValue(seriesInformationElement);if (seriesID == seriesInstanceUID)return seriesInformationElement;}seriesElement = ds.GetNextKey(seriesElement, true);seriesElement = ds.GetChildElement(seriesElement, true);}return null;}// return the first frame file name of the series.private string GetFirstImageName(DicomDataSet ds, DicomElement seriesElement, string directoryPath, out DicomElement imageElement){DicomElement imageIDElement = null;imageElement = ds.GetChildKey(seriesElement);imageElement = ds.GetChildElement(imageElement, true);while (imageElement != null){imageIDElement = ds.FindFirstElement(imageElement,DicomTag.ReferencedFileID,true);if (imageIDElement != null){return directoryPath + "\\" + ds.GetConvertValue(imageIDElement);}}return "";}// return the next frame file name of the series.private string GetNextImageName(DicomDataSet ds, string directoryPath, ref DicomElement imageElement){DicomElement nextImageElement = null;imageElement = ds.GetNextKey(imageElement, true);imageElement = ds.GetChildElement(imageElement, true);while (imageElement != null){nextImageElement = ds.FindFirstElement(imageElement,DicomTag.ReferencedFileID,true);if (imageElement != null){DicomElement echoElement = ds.FindFirstElement(imageElement,DicomTag.EchoNumber,true);return directoryPath + "\\" + ds.GetConvertValue(nextImageElement);}}return "";}private bool AddImageToImageArray(DicomDataSet ds, int index, string imagePath, out int echoNumber){echoNumber = -1;MedicalViewerImageData imageData = new MedicalViewerImageData();patientElement = ds.FindFirstElement(null,DicomTag.ImagePositionPatient,true);doubleArray = ds.GetDoubleValue(patientElement, 0, 3);imageData.ImagePosition = Point3D.FromDoubleArray(doubleArray);imageData.Data = imagePath;imageData.EchoNumber = echoNumber;patientElement = ds.FindFirstElement(null,DicomTag.FrameOfReferenceUID,true);referenceUID = ds.GetConvertValue(patientElement);imageData.FrameOfReferenceUID = referenceUID;patientElement = ds.FindFirstElement(null,DicomTag.ImageOrientationPatient,true);imageData.ImageOrientation = ds.GetConvertValue(patientElement);patientElement = ds.FindFirstElement(null,DicomTag.PixelSpacing,true);doubleArray = ds.GetDoubleValue(patientElement, 0, 2);imageData.PixelSpacing = new Point2D((float)doubleArray[0], (float)doubleArray[1]);_imageDataList.Add(imageData);return true;}public MedicalViewerSeriesManager LoadJamesHead(){DicomEngine.Startup();DicomDataSet ds = new DicomDataSet();ds.Load(Path.Combine(LEAD_VARS.JamesCTDir , "DICOMDIR"), DicomDataSetLoadFlags.None);string directoryPath = LEAD_VARS.JamesCTDir;///*LeadtoolsExamples.Common.ImagesPath.Path*/ Path.Combine(LEAD_VARS.ImagesDir, @"\Miller James-CT Head full Study\");string studyInstanceUID = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000022";string seriesInstanceUID = "1.3.12.2.1107.5.1.4.50772.30000009122208215356200001997";_studyElement = FindStudy(ds, studyInstanceUID);_seriesElement = FindSeries(ds, _studyElement, seriesInstanceUID);int count = 256;_seriesManager = new MedicalViewerSeriesManager();_imageDataList = new List<MedicalViewerImageData>();DicomDataSet dicomDataSet;int imageIndex;string imagePath;int echoNumber = 0;imagePath = GetFirstImageName(ds, _seriesElement, directoryPath, out imageElement);for (imageIndex = 0; imageIndex < count; imageIndex++){try{dicomDataSet = new DicomDataSet();dicomDataSet.Load(imagePath, DicomDataSetLoadFlags.None);AddImageToImageArray(dicomDataSet, imageIndex, imagePath, out echoNumber);dicomDataSet.Dispose();imagePath = GetNextImageName(ds, directoryPath, ref imageElement);}catch (System.Exception exception){System.Diagnostics.Debug.Assert(false, exception.Message);throw;}}_seriesManager.Sort(_imageDataList);DicomEngine.Shutdown();return _seriesManager;}public MedicalViewerSeriesManager LoadJamesHead512(){DicomEngine.Startup();DicomDataSet ds = new DicomDataSet();ds.Load(Path.Combine(LEAD_VARS.JamesCTDir, "DICOMDIR"), DicomDataSetLoadFlags.None);string directoryPath = LEAD_VARS.JamesCTDir;string studyInstanceUID = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000022";string seriesInstanceUID = "1.3.12.2.1107.5.1.4.50772.30000009122208215356200002254";_studyElement = FindStudy(ds, studyInstanceUID);_seriesElement = FindSeries(ds, _studyElement, seriesInstanceUID);int count = 512;_seriesManager512 = new MedicalViewerSeriesManager();_imageDataList = new List<MedicalViewerImageData>();DicomDataSet dicomDataSet;int imageIndex;string imagePath;int echoNumber = 0;imagePath = GetFirstImageName(ds, _seriesElement, directoryPath, out imageElement);for (imageIndex = 0; imageIndex < count; imageIndex++){try{dicomDataSet = new DicomDataSet();dicomDataSet.Load(imagePath, DicomDataSetLoadFlags.None);AddImageToImageArray(dicomDataSet, imageIndex, imagePath, out echoNumber);dicomDataSet.Dispose();imagePath = GetNextImageName(ds, directoryPath, ref imageElement);}catch (System.Exception exception){System.Diagnostics.Debug.Assert(false, exception.Message);throw;}}_seriesManager512.Sort(_imageDataList);DicomEngine.Shutdown();return _seriesManager512;}}MedicalViewerSeriesManagerFrom GetMedicalControlForReverseExample(){MedicalViewerSeriesManagerFrom form = new MedicalViewerSeriesManagerFrom();MedicalViewerSeriesManager output = form.LoadJamesHead();return new MedicalViewerSeriesManagerFrom(output);}//public void MedicalViewerSeriesManagerLoadingExample(){MedicalViewerSeriesManagerFrom myForm = GetMedicalControlForReverseExample();myForm.ShowDialog();}static class LEAD_VARS{public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS Images";}
Imports LeadtoolsImports Leadtools.DicomImports Leadtools.Medical3DImports Leadtools.CodecsImports Leadtools.MedicalViewerImports Leadtools.Annotations.CoreImports Leadtools.Annotations.DesignersImports Leadtools.ImageProcessing.CorePrivate Class MedicalViewerSeriesManagerFrom : Inherits FormPrivate _studyElement As DicomElementPrivate _seriesElement As DicomElementPrivate _seriesManager As MedicalViewerSeriesManagerPrivate _seriesManager512 As MedicalViewerSeriesManagerPrivate _imageDataList As List(Of MedicalViewerImageData)Private doubleArray As Double()Private patientElement As DicomElementPrivate referenceUID As StringPrivate imageElement As DicomElementPrivate _medicalViewer As MedicalViewerPublic Sub New()End SubPrivate Sub MedicalViewerSeriesManagerFrom_SizeChanged(ByVal sender As Object, ByVal e As EventArgs)_medicalViewer.Size = New Size(Me.ClientRectangle.Right, Me.ClientRectangle.Bottom)End SubPublic Sub New(ByVal output As MedicalViewerSeriesManager)Dim _codecs As RasterCodecs = New RasterCodecs()AddHandler SizeChanged, AddressOf MedicalViewerSeriesManagerFrom_SizeChanged' Create the medical viewer and adjust the size and the location._medicalViewer = New MedicalViewer(1, 2)_medicalViewer.Location = New Point(0, 0)_medicalViewer.Size = New Size(Me.ClientRectangle.Right, Me.ClientRectangle.Bottom)_seriesManager = outputDim cell As MedicalViewerMultiCell = New MedicalViewerMultiCell(Nothing, True, 1, 1)Dim index As IntegerDim count As Integer = output.Stacks(0).Items.CountDim codecsInformation As CodecsImageInfoDim imageInformation As MedicalViewerImageInformation() = New MedicalViewerImageInformation(count - 1) {}index = 0Do While index < countcodecsInformation = _codecs.GetInformation(CStr(output.Stacks(0).Items(index).Data), True)imageInformation(index) = New MedicalViewerImageInformation()imageInformation(index).ImageHeight = codecsInformation.WidthimageInformation(index).ImageWidth = codecsInformation.WidthimageInformation(index).XResolution = codecsInformation.XResolutionimageInformation(index).YResolution = codecsInformation.YResolutionindex += 1LoopAddHandler cell.FramesRequested, AddressOf cell_FramesRequestedAddHandler FormClosing, AddressOf MedicalViewerSeriesManagerFrom_FormClosingcell.EnableLowMemoryUsage(2, count, imageInformation)_medicalViewer.Cells.Add(cell)cell.PixelSpacing = output.Stacks(0).PixelSpacingcell.ImageOrientation = output.Stacks(0).Items(0).ImageOrientationArraycell.FrameOfReferenceUID = output.Stacks(0).Items(0).FrameOfReferenceUIDindex = 0Do While index < countcell.SetImagePosition(index, output.Stacks(0).Items(index).ImagePosition, (index = count - 1))index += 1Loop' add some actions that will be used to change the properties of the images inside the control.cell.AddAction(MedicalViewerActionType.WindowLevel)cell.AddAction(MedicalViewerActionType.Alpha)cell.AddAction(MedicalViewerActionType.Offset)cell.AddAction(MedicalViewerActionType.Stack)' assign the added actions to a mouse button, meaning that when the user clicks and drags the mouse button, the associated action will be activated.cell.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active)cell.SetAction(MedicalViewerActionType.Alpha, MedicalViewerMouseButtons.Middle, MedicalViewerActionFlags.Active)cell.SetAction(MedicalViewerActionType.Offset, MedicalViewerMouseButtons.Right, MedicalViewerActionFlags.Active)cell.SetAction(MedicalViewerActionType.Stack, MedicalViewerMouseButtons.Wheel, MedicalViewerActionFlags.Active)' adjust some properties of the cell and add some tags._medicalViewer.Cells(0).SetTag(2, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.UserData, "EX. ID 230-36-5448")_medicalViewer.Cells(0).SetTag(4, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Frame)_medicalViewer.Cells(0).SetTag(6, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Scale)_medicalViewer.Cells(0).SetTag(2, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.WindowLevelData)_medicalViewer.Cells(0).SetTag(1, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.FieldOfView)_medicalViewer.Cells(0).SetTag(1, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.UserData, "Echo number = " & output.Stacks(0).EchoNumber.ToString())Controls.Add(_medicalViewer)_medicalViewer.Dock = DockStyle.FillEnd SubPrivate Sub cell_FramesRequested(ByVal sender As Object, ByVal e As MedicalViewerRequestedFramesInformationEventArgs)Dim cell As MedicalViewerMultiCell = CType(sender, MedicalViewerMultiCell)Dim _codecs As RasterCodecs = New RasterCodecs()Dim i As IntegerDim image As RasterImageDim fileName As StringIf e.RequestedFramesIndexes.Length > 0 ThenfileName = CStr(_seriesManager.Stacks(0).Items(e.RequestedFramesIndexes(0)).Data)image = _codecs.Load(fileName)ElseReturnEnd Ifi = 1Do While i < e.RequestedFramesIndexes.LengthfileName = CStr(_seriesManager.Stacks(0).Items(e.RequestedFramesIndexes(i)).Data)image.AddPage(_codecs.Load(fileName))i += 1Loopcell.SetRequestedImage(image, e.RequestedFramesIndexes, MedicalViewerSetImageOptions.Insert)End SubPrivate Sub MedicalViewerSeriesManagerFrom_FormClosing(ByVal sender As Object, ByVal e As FormClosingEventArgs)End Sub' Find the study using the Study instance UID, and return it's DicomElement if the study is foundPrivate Function FindStudy(ByVal ds As DicomDataSet, ByVal studyInstanceUID As String) As DicomElement' get the parent element.Dim patientElement As DicomElement = ds.GetFirstKey(Nothing, True)Dim studyElement As DicomElement = NothingDim studyInformationElement As DicomElement = NothingDim studyID As StringstudyElement = ds.GetChildKey(patientElement)studyElement = ds.GetChildElement(studyElement, True)Do While Not studyElement Is NothingstudyInformationElement = ds.FindFirstElement(studyElement, DicomTag.StudyInstanceUID, True)If Not studyInformationElement Is Nothing ThenstudyID = ds.GetConvertValue(studyInformationElement)If studyID = studyInstanceUID ThenReturn studyInformationElementEnd IfEnd IfstudyElement = ds.GetNextKey(studyElement, True)studyElement = ds.GetChildElement(studyElement, True)LoopReturn NothingEnd Function' Find the series using the Series instance UID, and return it's DicomElement if the series is foundPrivate Function FindSeries(ByVal ds As DicomDataSet, ByVal studyElement As DicomElement, ByVal seriesInstanceUID As String) As DicomElementDim seriesElement As DicomElement = NothingDim seriesInformationElement As DicomElement = NothingDim seriesID As StringseriesElement = ds.GetChildKey(studyElement)seriesElement = ds.GetChildElement(seriesElement, True)Do While Not seriesElement Is NothingseriesInformationElement = ds.FindFirstElement(seriesElement, DicomTag.SeriesInstanceUID, True)If Not seriesInformationElement Is Nothing ThenseriesID = ds.GetConvertValue(seriesInformationElement)If seriesID = seriesInstanceUID ThenReturn seriesInformationElementEnd IfEnd IfseriesElement = ds.GetNextKey(seriesElement, True)seriesElement = ds.GetChildElement(seriesElement, True)LoopReturn NothingEnd Function' return the first frame file name of the series.Private Function GetFirstImageName(ByVal ds As DicomDataSet, ByVal seriesElement As DicomElement, ByVal directoryPath As String, <System.Runtime.InteropServices.Out()> ByRef imageElement As DicomElement) As StringDim imageIDElement As DicomElement = NothingimageElement = ds.GetChildKey(seriesElement)imageElement = ds.GetChildElement(imageElement, True)Do While Not imageElement Is NothingimageIDElement = ds.FindFirstElement(imageElement, DicomTag.ReferencedFileID, True)If Not imageIDElement Is Nothing ThenReturn directoryPath & "\" & ds.GetConvertValue(imageIDElement)End IfLoopReturn ""End Function' return the next frame file name of the series.Private Function GetNextImageName(ByVal ds As DicomDataSet, ByVal directoryPath As String, ByRef imageElement As DicomElement) As StringDim nextImageElement As DicomElement = NothingimageElement = ds.GetNextKey(imageElement, True)imageElement = ds.GetChildElement(imageElement, True)Do While Not imageElement Is NothingnextImageElement = ds.FindFirstElement(imageElement, DicomTag.ReferencedFileID, True)If Not imageElement Is Nothing ThenDim echoElement As DicomElement = ds.FindFirstElement(imageElement, DicomTag.EchoNumber, True)Return directoryPath & "\" & ds.GetConvertValue(nextImageElement)End IfLoopReturn ""End FunctionPrivate Function AddImageToImageArray(ByVal ds As DicomDataSet, ByVal index As Integer, ByVal imagePath As String, <System.Runtime.InteropServices.Out()> ByRef echoNumber As Integer) As BooleanechoNumber = -1Dim imageData As MedicalViewerImageData = New MedicalViewerImageData()patientElement = ds.FindFirstElement(Nothing, DicomTag.ImagePositionPatient, True)doubleArray = ds.GetDoubleValue(patientElement, 0, 3)imageData.ImagePosition = Point3D.FromDoubleArray(doubleArray)imageData.Data = imagePathimageData.EchoNumber = echoNumberpatientElement = ds.FindFirstElement(Nothing, DicomTag.FrameOfReferenceUID, True)referenceUID = ds.GetConvertValue(patientElement)imageData.FrameOfReferenceUID = referenceUIDpatientElement = ds.FindFirstElement(Nothing, DicomTag.ImageOrientationPatient, True)imageData.ImageOrientation = ds.GetConvertValue(patientElement)patientElement = ds.FindFirstElement(Nothing, DicomTag.PixelSpacing, True)doubleArray = ds.GetDoubleValue(patientElement, 0, 2)imageData.PixelSpacing = New Point2D(CSng(doubleArray(0)), CSng(doubleArray(1)))_imageDataList.Add(imageData)Return TrueEnd FunctionPublic Function LoadJamesHead() As MedicalViewerSeriesManagerDicomEngine.Startup()Dim ds As DicomDataSet = New DicomDataSet()'INSTANT VB NOTE: Embedded comments are not maintained by Instant VB'ORIGINAL LINE: ds.Load(/*LeadtoolsExamples.Common.ImagesPath.Path*/@"\\pc202\readwritefolder\DICOM Dataset\DICOM Volume datasets" + "\\Miller James-CT Head full Study\\DICOMDIR", DicomDataSetLoadFlags.None);ds.Load(Path.Combine(LEAD_VARS.ImagesDir, "Miller James-CT Head full Study\DICOMDIR"), DicomDataSetLoadFlags.None)'INSTANT VB NOTE: Embedded comments are not maintained by Instant VB'ORIGINAL LINE: string directoryPath = /*LeadtoolsExamples.Common.ImagesPath.Path*/ @"\\pc202\readwritefolder\DICOM Dataset\DICOM Volume datasets" + "\\Miller James-CT Head full Study\\";Dim directoryPath As String = Path.Combine(LEAD_VARS.ImagesDir, "\Miller James-CT Head full Study\")Dim studyInstanceUID As String = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000022"Dim seriesInstanceUID As String = "1.3.12.2.1107.5.1.4.50772.30000009122208215356200001997"_studyElement = FindStudy(ds, studyInstanceUID)_seriesElement = FindSeries(ds, _studyElement, seriesInstanceUID)Dim count As Integer = 256_seriesManager = New MedicalViewerSeriesManager()_imageDataList = New List(Of MedicalViewerImageData)()Dim dicomDataSet As DicomDataSetDim imageIndex As IntegerDim imagePath As StringDim echoNumber As Integer = 0imagePath = GetFirstImageName(ds, _seriesElement, directoryPath, imageElement)imageIndex = 0Do While imageIndex < countTrydicomDataSet = New DicomDataSet()dicomDataSet.Load(imagePath, DicomDataSetLoadFlags.None)AddImageToImageArray(dicomDataSet, imageIndex, imagePath, echoNumber)dicomDataSet.Dispose()imagePath = GetNextImageName(ds, directoryPath, imageElement)Catch exception As System.ExceptionSystem.Diagnostics.Debug.Assert(False, exception.Message)ThrowEnd TryimageIndex += 1Loop_seriesManager.Sort(_imageDataList)DicomEngine.Shutdown()Return _seriesManagerEnd FunctionPublic Function LoadJamesHead512() As MedicalViewerSeriesManagerDicomEngine.Startup()Dim ds As DicomDataSet = New DicomDataSet()ds.Load(Path.Combine(LEAD_VARS.JamesCTDir, "DICOMDIR"), DicomDataSetLoadFlags.None)Dim directoryPath As String = LEAD_VARS.JamesCTDirDim studyInstanceUID As String = "1.3.12.2.1107.5.1.4.50772.30000009122208074910900000022"Dim seriesInstanceUID As String = "1.3.12.2.1107.5.1.4.50772.30000009122208215356200002254"_studyElement = FindStudy(ds, studyInstanceUID)_seriesElement = FindSeries(ds, _studyElement, seriesInstanceUID)Dim count As Integer = 512_seriesManager512 = New MedicalViewerSeriesManager()_imageDataList = New List(Of MedicalViewerImageData)()Dim dicomDataSet As DicomDataSetDim imageIndex As IntegerDim imagePath As StringDim echoNumber As Integer = 0imagePath = GetFirstImageName(ds, _seriesElement, directoryPath, imageElement)imageIndex = 0Do While imageIndex < countTrydicomDataSet = New DicomDataSet()dicomDataSet.Load(imagePath, DicomDataSetLoadFlags.None)AddImageToImageArray(dicomDataSet, imageIndex, imagePath, echoNumber)dicomDataSet.Dispose()imagePath = GetNextImageName(ds, directoryPath, imageElement)Catch exception As System.ExceptionSystem.Diagnostics.Debug.Assert(False, exception.Message)ThrowEnd TryimageIndex += 1Loop_seriesManager512.Sort(_imageDataList)DicomEngine.Shutdown()Return _seriesManager512End FunctionEnd ClassPrivate Function GetMedicalControlForReverseExample() As MedicalViewerSeriesManagerFromDim form As MedicalViewerSeriesManagerFrom = New MedicalViewerSeriesManagerFrom()Dim output As MedicalViewerSeriesManager = form.LoadJamesHead()Return New MedicalViewerSeriesManagerFrom(output)End Function'<TestMethod()> _Public Sub MedicalViewerSeriesManagerLoadingExample()Dim myForm As MedicalViewerSeriesManagerFrom = GetMedicalControlForReverseExample()myForm.ShowDialog()End SubPublic NotInheritable Class LEAD_VARSPublic Const ImagesDir As String = "C:\Users\Public\Documents\LEADTOOLS Images"End Class
Raster .NET | C API | C++ Class Library | JavaScript HTML5
Document .NET | C API | C++ Class Library | JavaScript HTML5
Medical .NET | C API | C++ Class Library | JavaScript HTML5
Medical Web Viewer .NET
