public class WindowLevelEffect : ShaderEffect
Public Class WindowLevelEffect
Inherits System.Windows.Media.Effects.ShaderEffect
Implements System.Windows.Media.Animation.IAnimatable
public ref class WindowLevelEffect : public System.Windows.Media.Effects.ShaderEffect, System.Windows.Media.Animation.IAnimatable
Provides "on demand" window-leveling as an effect and does not alter the image data.
To learn more about window-leveling, refer to RasterImage.WindowLevel, RasterImage.WindowLevelExt, WindowLevelCommand, Leadtools.ImageProcessing.Core.WindowLevelExtCommand, Saving Window-Leveled Images , and Changing Brightness and Contrast.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.ImageProcessing;
using Leadtools.Windows.Controls;
using Leadtools.Windows.Media;
using Leadtools.Windows.Media.Effects;
class WindowLevelEffectExampleWindow : Window
{
public WindowLevelEffectExampleWindow()
{
StackPanel sp = new StackPanel();
Content = sp;
RasterImageViewer theViewer = new RasterImageViewer();
theViewer.HorizontalAlignment = HorizontalAlignment.Center;
theViewer.VerticalAlignment = VerticalAlignment.Top;
theViewer.ImageHorizontalAlignment = HorizontalAlignment.Left;
theViewer.ImageVerticalAlignment = VerticalAlignment.Top;
sp.Children.Add(theViewer);
// Load an image into the viewer
using (RasterCodecs codecs = new RasterCodecs())
{
theViewer.Image = codecs.Load(System.IO.Path.Combine(LEAD_VARS.ImagesDir, "Image3.dcm"));
}
// Create the sliders
TextBlock tb = new TextBlock();
tb.HorizontalAlignment = HorizontalAlignment.Center;
tb.Text = "Window Width:";
sp.Children.Add(tb);
Slider windowWidthSlider = new Slider();
windowWidthSlider.Minimum = 0.0;
windowWidthSlider.Maximum = Math.Pow(2, theViewer.Image.BitsPerPixel - 1);
windowWidthSlider.Width = 400;
windowWidthSlider.Orientation = Orientation.Horizontal;
windowWidthSlider.IsSnapToTickEnabled = true;
windowWidthSlider.TickPlacement = System.Windows.Controls.Primitives.TickPlacement.BottomRight;
windowWidthSlider.TickFrequency = 0.1;
windowWidthSlider.AutoToolTipPrecision = 2;
windowWidthSlider.AutoToolTipPlacement = System.Windows.Controls.Primitives.AutoToolTipPlacement.BottomRight;
sp.Children.Add(windowWidthSlider);
tb = new TextBlock();
tb.HorizontalAlignment = HorizontalAlignment.Center;
tb.Text = "Window Center:";
sp.Children.Add(tb);
Slider windowCenterSlider = new Slider();
windowCenterSlider.Minimum = 0.0;
windowCenterSlider.Maximum = Math.Pow(2, theViewer.Image.BitsPerPixel - 1);
windowCenterSlider.Width = 400;
windowCenterSlider.Orientation = Orientation.Horizontal;
windowCenterSlider.IsSnapToTickEnabled = true;
windowCenterSlider.TickPlacement = System.Windows.Controls.Primitives.TickPlacement.BottomRight;
windowCenterSlider.TickFrequency = 0.1;
windowCenterSlider.AutoToolTipPrecision = 2;
windowCenterSlider.AutoToolTipPlacement = System.Windows.Controls.Primitives.AutoToolTipPlacement.BottomRight;
sp.Children.Add(windowCenterSlider);
// Setup the effect
WindowLevelEffect effect = new WindowLevelEffect();
// Set the texture
effect.FillGrayTexture(theViewer.Image);
effect.Start = Colors.Black;
effect.End = Colors.White;
effect.CurveType = CurveType.Linear;
effect.Factor = 0.0;
effect.WindowWidth = Math.Pow(2, theViewer.Image.MaxValue - theViewer.Image.MinValue);
effect.WindowCenter = effect.WindowWidth / 2;
theViewer.ImageEffect = effect;
// Bind the properties
Binding bind = new Binding();
bind.Source = effect;
bind.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
bind.Path = new PropertyPath("WindowWidth");
windowWidthSlider.SetBinding(Slider.ValueProperty, bind);
bind = new Binding();
bind.Source = effect;
bind.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged;
bind.Path = new PropertyPath("WindowCenter");
windowCenterSlider.SetBinding(Slider.ValueProperty, bind);
Title = "Using WindowLevelEffect";
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS21\Resources\Images";
}
Imports Leadtools
Imports Leadtools.Codecs
Imports Leadtools.ImageProcessing
Imports Leadtools.Windows.Controls
Imports Leadtools.Windows.Media
Imports Leadtools.Windows.Media.Effects
Class WindowLevelEffectExampleWindow
Inherits Window
Public Sub New()
Dim sp As New StackPanel()
Content = sp
Dim theViewer As New RasterImageViewer()
theViewer.HorizontalAlignment = HorizontalAlignment.Center
theViewer.VerticalAlignment = VerticalAlignment.Top
theViewer.ImageHorizontalAlignment = HorizontalAlignment.Left
theViewer.ImageVerticalAlignment = VerticalAlignment.Top
sp.Children.Add(theViewer)
' Load an image into the viewer
Using codecs As New RasterCodecs()
theViewer.Image = codecs.Load(System.IO.Path.Combine(LEAD_VARS.ImagesDir, "Image3.dcm"))
End Using
' Create the sliders
Dim tb As New TextBlock()
tb.HorizontalAlignment = HorizontalAlignment.Center
tb.Text = "Window Width:"
sp.Children.Add(tb)
Dim windowWidthSlider As New Slider()
windowWidthSlider.Minimum = 0.0
windowWidthSlider.Maximum = Math.Pow(2, theViewer.Image.BitsPerPixel - 1)
windowWidthSlider.Width = 400
windowWidthSlider.Orientation = Orientation.Horizontal
windowWidthSlider.IsSnapToTickEnabled = True
windowWidthSlider.TickPlacement = System.Windows.Controls.Primitives.TickPlacement.BottomRight
windowWidthSlider.TickFrequency = 0.1
windowWidthSlider.AutoToolTipPrecision = 2
windowWidthSlider.AutoToolTipPlacement = System.Windows.Controls.Primitives.AutoToolTipPlacement.BottomRight
sp.Children.Add(windowWidthSlider)
tb = New TextBlock()
tb.HorizontalAlignment = HorizontalAlignment.Center
tb.Text = "Window Center:"
sp.Children.Add(tb)
Dim windowCenterSlider As New Slider()
windowCenterSlider.Minimum = 0.0
windowCenterSlider.Maximum = Math.Pow(2, theViewer.Image.BitsPerPixel - 1)
windowCenterSlider.Width = 400
windowCenterSlider.Orientation = Orientation.Horizontal
windowCenterSlider.IsSnapToTickEnabled = True
windowCenterSlider.TickPlacement = System.Windows.Controls.Primitives.TickPlacement.BottomRight
windowCenterSlider.TickFrequency = 0.1
windowCenterSlider.AutoToolTipPrecision = 2
windowCenterSlider.AutoToolTipPlacement = System.Windows.Controls.Primitives.AutoToolTipPlacement.BottomRight
sp.Children.Add(windowCenterSlider)
' Setup the effect
Dim effect As New WindowLevelEffect()
' Set the texture
effect.FillGrayTexture(theViewer.Image)
effect.Start = Colors.Black
effect.End = Colors.White
effect.CurveType = CurveType.Linear
effect.Factor = 0.0
effect.WindowWidth = Math.Pow(2, theViewer.Image.MaxValue - theViewer.Image.MinValue)
effect.WindowCenter = effect.WindowWidth / 2
theViewer.ImageEffect = effect
' Bind the properties
Dim bind As New Binding()
bind.Source = effect
bind.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
bind.Path = New PropertyPath("WindowWidth")
windowWidthSlider.SetBinding(Slider.ValueProperty, bind)
bind = New Binding()
bind.Source = effect
bind.UpdateSourceTrigger = UpdateSourceTrigger.PropertyChanged
bind.Path = New PropertyPath("WindowCenter")
windowCenterSlider.SetBinding(Slider.ValueProperty, bind)
Title = "Using WindowLevelEffect"
End Sub
End Class
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
Your email has been sent to support! Someone should be in touch! If your matter is urgent please come back into chat.
Chat Hours:
Monday - Friday, 8:30am to 6pm ET
Thank you for your feedback!
Please fill out the form again to start a new chat.
All agents are currently offline.
Chat Hours:
Monday - Friday
8:30AM - 6PM EST
To contact us please fill out this form and we will contact you via email.