public int GetWindowCount(
int frameIndex
)
Public Function GetWindowCount( _
ByVal frameIndex As Integer _
) As Integer
public int getWindowCount(int frameIndex)
public:
int GetWindowCount(
int frameIndex
)
frameIndex
A zero-based index that identifies the frame number in the dataset. If the dataset does not support Multi-frames, this parameter is ignored.
The number of values under the window center element.
This property gets the number of values under the Window Center (0028,1050) element; this should also equal the number of values under the Window Width (0028,1051) element. The Multi-frame Functional Groups module may have a Shared Functional Groups Sequence item, and/or a Per-frame Functional Groups Sequence item. Either of these items may have a Frame VOI LUT Sequence (0028,9132) item. If the following elements are not found at the top level in the dataset, this method looks in the Shared Functional Groups Sequence item and the Per-frame Functional Groups Sequence items.
Tag | Name |
(0028,1050) | Window Center |
(0028,1051) | Window Width |
(0028,1055) | Window Center & Width Explanation |
For a detailed discussion on Multi-frame Functional Groups see the topic Multi-frame Functional Groups.
This example will load a DICOM dataset, extract the window center and window width and then update their values.
using Leadtools;
using Leadtools.Dicom;
public void TestWCWW()
{
string dicomFileName = Path.Combine(LEAD_VARS.ImagesDir, "DICOM", "image3.dcm");
//Make sure to initialize the DICOM engine, this needs to be done only once
//In the whole application
DicomEngine.Startup();
using (DicomDataSet ds = new DicomDataSet())
{
//Load DICOM File
ds.Load(dicomFileName, DicomDataSetLoadFlags.None);
int bitsStored = 16;
bool add = false;//Add a new window or replace the existing one(s)
int windowIndex = 0;
DicomWindowAttributes windowAttributes = new DicomWindowAttributes();
if (ds.GetWindowCount(0) > 0)
{
DicomWindowAttributes attributes = ds.GetWindow(0);
if (attributes != null)
{
windowAttributes.WindowCenter = attributes.WindowCenter / 2;
windowAttributes.WindowWidth = attributes.WindowWidth / 2;
}
}
else
{
windowAttributes.WindowCenter = 1 << (bitsStored - 1);
windowAttributes.WindowWidth = 1 << bitsStored;
}
windowIndex = ds.GetWindowCount(0);
if (!add)
{
// Delete the existing window(s)
ds.DeleteWindow();
windowIndex = 0;
}
// Add the new window
ds.SetWindow(windowIndex, windowAttributes);
ds.Save(Path.Combine(LEAD_VARS.ImagesDir, "DICOM", "WCWW.dcm"), DicomDataSetSaveFlags.None);
}
DicomEngine.Shutdown();
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS21\Resources\Images";
}
Imports Leadtools
Imports Leadtools.Dicom
Public Sub TestWCWW()
Dim dicomFileName As String = Path.Combine(LEAD_VARS.ImagesDir, "IMAGE3.dcm")
'Make sure to initialize the DICOM engine, this needs to be done only once
'In the whole application
DicomEngine.Startup()
Dim ds As DicomDataSet = New DicomDataSet()
Using (ds)
'Load DICOM File
ds.Load(dicomFileName, DicomDataSetLoadFlags.None)
Dim bitsStored As Integer = 16
Dim add As Boolean = False 'Add a new window or replace the existing one(s)
Dim windowIndex As Integer = 0
Dim windowAttributes As DicomWindowAttributes = New DicomWindowAttributes()
If ds.GetWindowCount(0) > 0 Then
Dim attributes As DicomWindowAttributes = ds.GetWindow(0)
If Not attributes Is Nothing Then
windowAttributes.WindowCenter = attributes.WindowCenter / 2
windowAttributes.WindowWidth = attributes.WindowWidth / 2
End If
Else
windowAttributes.WindowCenter = 1 << (bitsStored - 1)
windowAttributes.WindowWidth = 1 << bitsStored
End If
windowIndex = ds.GetWindowCount(0)
If (Not add) Then
' Delete the existing window(s)
ds.DeleteWindow()
windowIndex = 0
End If
' Add the new window
ds.SetWindow(windowIndex, windowAttributes)
ds.Save(Path.Combine(LEAD_VARS.ImagesDir, "WCWW.dcm"), DicomDataSetSaveFlags.None)
End Using
DicomEngine.Shutdown()
End Sub
Public NotInheritable Class LEAD_VARS
Public Const ImagesDir As String = "C:\LEADTOOLS21\Resources\Images"
End Class
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