public sealed class DicomEngine @interface LTDicomEngine : NSObject // STATIC CLASS public class DicomEngine public ref class DicomEngine sealed To begin using the LEADTOOLS DICOM .NET Class Library, the user must initialize the data required by the library. The data is initialized by calling the Startup method.
Once the Startup method has been called, you can use the different features exposed by the library.
When the LEADTOOLS DICOM .NET Class Library is no longer to be used, the user must free the data associated with the library by calling Shutdown.
using Leadtools;using Leadtools.Dicom;public void DicomSetGetValueTest(){//Make sure to initialize the DICOM engine, this needs to be done only once//In the whole applicationDicomEngine.Startup();using (DicomDataSet dicomDataset = new DicomDataSet()){dicomDataset.Reset();dicomDataset.Initialize(DicomClassType.Undefined, DicomDataSetInitializeType.ExplicitVRLittleEndian);DicomElement element = dicomDataset.InsertElement(null, false, DicomTag.CineRate, DicomVRType.IS, false, 0);if (element != null){dicomDataset.SetIntValue(element, new int[] { 30 }, 1);int[] value = dicomDataset.GetIntValue(element, 0, 1);// can also call GetLongValueDebug.Assert(value[0] == 30);}element = dicomDataset.InsertElement(null, false, DicomTag.ChannelMaximumValue, DicomVRType.OB, false, 0);if (element != null){dicomDataset.SetByteValue(element, new byte[] { 55 }, 1);byte[] value = dicomDataset.GetByteValue(element, 0, 1);Debug.Assert(value[0] == 55);}element = dicomDataset.InsertElement(null, false, DicomTag.PregnancyStatus, DicomVRType.US, false, 0);if (element != null){dicomDataset.SetShortValue(element, new short[] { 2 }, 1);short[] value = dicomDataset.GetShortValue(element, 0, 1);Debug.Assert(value[0] == 2);}element = dicomDataset.InsertElement(null, false, DicomTag.SliceLocation, DicomVRType.DS, false, 0);if (element != null){dicomDataset.SetDoubleValue(element, new double[] { 10.5 }, 1);double[] value = dicomDataset.GetDoubleValue(element, 0, 1);Debug.Assert(value[0] == 10.5);}element = dicomDataset.InsertElement(null, false, DicomTag.PresentationPixelMagnificationRatio, DicomVRType.FL, false, 0);if (element != null){dicomDataset.SetFloatValue(element, new float[] { 3.2F }, 1);float[] value = dicomDataset.GetFloatValue(element, 0, 1);Debug.Assert(value[0] == 3.2F);// Or you can use this overloaddicomDataset.SetFloatValue(element, 4.0F);value = dicomDataset.GetFloatValue(element, 0, 1);Debug.Assert(value[0] == 4.0F);}element = dicomDataset.InsertElement(null, false, DicomTag.InstanceCreationDate, DicomVRType.DA, false, 0);if (element != null){DicomDateValue[] newvalue = new DicomDateValue[1];newvalue[0].Year = 2004;newvalue[0].Month = 1;newvalue[0].Day = 8;dicomDataset.SetDateValue(element, newvalue);DicomDateValue[] value = dicomDataset.GetDateValue(element, 0, 1);Debug.Assert((value[0].Year == 2004) && (value[0].Month == 1) && (value[0].Day == 8));// Or you can use the SetDateValue overload that takes a single DicomDateValuedicomDataset.SetDateValue(element, new DicomDateValue(1961, 6, 5));value = dicomDataset.GetDateValue(element, 0, 1);Debug.Assert((value[0].Year == 1961) && (value[0].Month == 6) && (value[0].Day == 5));}element = dicomDataset.InsertElement(null, false, DicomTag.InstanceCreationTime, DicomVRType.TM, false, 0);if (element != null){DicomTimeValue[] newvalue = new DicomTimeValue[1];newvalue[0].Hours = 2;newvalue[0].Minutes = 3;newvalue[0].Seconds = 5;dicomDataset.SetTimeValue(element, newvalue);DicomTimeValue[] value = dicomDataset.GetTimeValue(element, 0, 1);Debug.Assert((value[0].Hours == 2) && (value[0].Minutes == 3) && (value[0].Seconds == 5));}element = dicomDataset.InsertElement(null, false, DicomTag.AcquisitionDateTime, DicomVRType.DT, false, 0);if (element != null){DicomDateTimeValue[] newvalue = new DicomDateTimeValue[1];newvalue[0].Year = 2004;newvalue[0].Month = 1;newvalue[0].Day = 8;newvalue[0].Hours = 2;newvalue[0].Minutes = 3;newvalue[0].Seconds = 5;dicomDataset.SetDateTimeValue(element, newvalue);DicomDateTimeValue[] value = dicomDataset.GetDateTimeValue(element, 0, 1);Debug.Assert((value[0].Hours == 2) && (value[0].Minutes == 3) && (value[0].Seconds == 5));}element = dicomDataset.InsertElement(null, false, DicomTag.PatientAge, DicomVRType.AS, false, 0);if (element != null){DicomAgeValue[] newvalue = new DicomAgeValue[1];newvalue[0].Number = 25;newvalue[0].Reference = DicomAgeReferenceType.Days;dicomDataset.SetAgeValue(element, newvalue);DicomAgeValue[] value = dicomDataset.GetAgeValue(element, 0, 1);Debug.Assert((value[0].Number == 25));}element = dicomDataset.InsertElement(null, false, DicomTag.PatientName, DicomVRType.PN, false, 0);if (element != null){dicomDataset.FreeElementValue(element);dicomDataset.SetStringValue(element, "John Doe", DicomCharacterSetType.Default);Debug.Assert(dicomDataset.GetElementValueCount(element) == 1);Debug.Assert(dicomDataset.GetStringValue(element, 0) == "John Doe");}byte[] inPreamble = new byte[128];for (int i = 0; i < 128; i++){inPreamble[i] = (byte)i;}dicomDataset.SetPreamble(inPreamble, 0, 128);byte[] outPreamble = dicomDataset.GetPreamble(128);// Or you can use this overload which takes an offsetdicomDataset.GetPreamble(out outPreamble, 0, 128);Debug.Assert(inPreamble.Length == outPreamble.Length);element = dicomDataset.FindFirstElement(element, DicomTag.NumberOfRemainingSubOperations, true);if (element != null){//We don't really need to do thisdicomDataset.FreeElementValue(element);byte[] inBinaryValue = new byte[2];inBinaryValue[0] = 0;inBinaryValue[1] = 1;dicomDataset.SetBinaryValue(element, inBinaryValue, 2);byte[] outBinaryValue = dicomDataset.GetBinaryValue(element, 2);Debug.Assert((outBinaryValue[0] == 0) && (outBinaryValue[1] == 1));}element = dicomDataset.InsertElement(null, false, DicomTag.StudyDate, DicomVRType.DA, false, 0);if (element != null){DicomDateValue date1 = new DicomDateValue();date1.Day = 1;date1.Month = 2;date1.Year = 2005;DicomDateRangeValue[] newvalue = new DicomDateRangeValue[1];newvalue[0].Date1 = date1;newvalue[0].Type = DicomRangeType.Lower;dicomDataset.SetDateRangeValue(element, newvalue);DicomDateRangeValue value = dicomDataset.GetDateRangeValue(element, 0);Debug.Assert((value.Type == DicomRangeType.Lower) && (value.Date1.Year == 2005));}element = dicomDataset.InsertElement(null, false, DicomTag.StudyTime, DicomVRType.TM, false, 0);if (element != null){DicomTimeValue time1 = new DicomTimeValue();time1.Hours = 2;time1.Minutes = 1;time1.Seconds = 3;DicomTimeRangeValue[] newvalue = new DicomTimeRangeValue[1];newvalue[0].Time1 = time1;newvalue[0].Type = DicomRangeType.Lower;dicomDataset.SetTimeRangeValue(element, newvalue);DicomTimeRangeValue value = dicomDataset.GetTimeRangeValue(element, 0);Debug.Assert((value.Type == DicomRangeType.Lower) && (value.Time1.Hours == 2));}element = dicomDataset.InsertElement(null, false, DicomTag.PatientID, DicomVRType.LO, false, 0);if (element != null){dicomDataset.SetConvertValue(element, "154-4485", 1);Debug.Assert(dicomDataset.GetConvertValue(element) == "154-4485");}element = dicomDataset.InsertElement(null, false, DicomTag.SelectorULValue, DicomVRType.UL, false, 0);if (element != null){// Set two unsigned integer values (minimum and maximum unsigned 32-bit values)long[] values = new long[] { 0, 4294967295 };dicomDataset.SetLongValue(element, values, 2);string s = dicomDataset.GetConvertValue(element);Debug.Assert(dicomDataset.GetConvertValue(element) == "0\\4294967295");}dicomDataset.Save(Path.Combine(LEAD_VARS.ImagesDir, "Test.dcm"), DicomDataSetSaveFlags.None);}DicomEngine.Shutdown();}static class LEAD_VARS{public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
