←Select platform

GetWindowCount Method

Summary

Gets the number of values under the window center element.

Syntax
C#
VB
C++
Java
public int GetWindowCount( 
   int frameIndex 
) 
Public Function GetWindowCount( _ 
   ByVal frameIndex As Integer _ 
) As Integer 
public int getWindowCount(int frameIndex) 
public: 
int GetWindowCount(  
   int frameIndex 
)  

Parameters

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.

Return Value

The number of values under the window center element.

Remarks

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.

Example

This example will load a DICOM dataset, extract the window center and window width and then update their values.

C#
VB
using Leadtools; 
using Leadtools.Dicom; 
 
public void TestWCWW() 
{ 
   string dicomFileName = 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(); 
   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, "WCWW.dcm"), DicomDataSetSaveFlags.None); 
 
   } 
   DicomEngine.Shutdown(); 
} 
 
static class LEAD_VARS 
{ 
   public const string ImagesDir = @"C:\Users\Public\Documents\LEADTOOLS 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:\Users\Public\Documents\LEADTOOLS Images" 
End Class 
c#[Silverlight C# Example] 
using Leadtools; 
using Leadtools.Dicom; 
using Leadtools.Examples; 
 
public void TestWCWW(Stream dicomStream, Stream outputStream) 
{ 
   //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(dicomStream, 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(outputStream, DicomDataSetSaveFlags.None); 
 
   } 
   DicomEngine.Shutdown(); 
} 
vb[Silverlight VB Example] 
Imports Leadtools 
Imports Leadtools.Dicom 
 
Public Sub TestWCWW(ByVal dicomStream As Stream, ByVal outputStream As Stream) 
   'Make sure to initialize the DICOM engine, this needs to be done only once  
   'In the whole application 
   DicomEngine.Startup() 
   Using ds As DicomDataSet = New DicomDataSet() 
      'Load DICOM File 
      ds.Load(dicomStream, 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(outputStream, DicomDataSetSaveFlags.None) 
 
   End Using 
   DicomEngine.Shutdown() 
End Sub 

Requirements

Target Platforms

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

Leadtools.Dicom Assembly