Levels class

An Effect that sets the highlight, midtone and shadow levels of a picture.

Levels stretches the range of colour values: the shadow level is the value that becomes black, the highlight level the value that becomes white, and the midtone setting moves the middle values. It is the effect behind a Levels dialog of a picture editor. The class mirrors the GDI+ Levels class and inherits the members of Effect.

Creating

Syntax: fx = Levels( )

Syntax: fx = Levels( params )

Syntax: fx = Levels( highlight, midtone, shadow )

Each form is also available as New Levels( … ) with the same arguments.

params
required A LevelsParams for the parameters.
highlight
required A Long from 0 to 100: the level, in percent of the range, that becomes white. 100 leaves the top of the range alone.
midtone
required A Long from -100 to 100. A positive value lightens the middle values and a negative one darkens them. 0 changes nothing.
shadow
required A Long from 0 to 100: the level, in percent of the range, that becomes black. 0 leaves the bottom of the range alone. It has to be lower than highlight.

A constructor that fails creates an unusable object whose LastResult tells why.

Parameters

Syntax: fx.Parameters [ = params ]

Syntax: params = fx.Parameters( size )

Gets or sets the LevelsParams.

Note 0.9.45.0

The first field of LevelsParams is named highight, with the letter l missing. Write params.highight.

Dim user As GdiPlusUser = GdiPlusUser()

Dim fx As Levels = Levels(80, 50, 20)
Dim p As LevelsParams = fx.Parameters(LenB(Of LevelsParams))
Debug.Print fx.LastResult & " " & p.highight & " " & p.midtone & " " & p.shadow
' Output:
' 0 80 50 20

Example

The example applies the default levels, which change nothing, and then stretched levels.

Dim user As GdiPlusUser = GdiPlusUser()

Dim same As Bitmap = Bitmap(4!, 4!)
Dim stretched As Bitmap = Bitmap(4!, 4!)
Graphics(same).Clear(Color(255, 200, 100, 50))
Graphics(stretched).Clear(Color(255, 200, 100, 50))

same.ApplyEffect Levels(100, 0, 0), GpRect(0, 0, 4, 4)
stretched.ApplyEffect Levels(80, 50, 20), GpRect(0, 0, 4, 4)
Debug.Print Hex$(same.Pixel(1, 1).argb)
Debug.Print Hex$(stretched.Pixel(1, 1).argb)
' Output:
' FFC86432
' FFFC9000

See Also