AutoLevels.vb
C# VB
'''' This code is part of Document Solutions for Imaging demos.'' Copyright (c) MESCIUS inc. All rights reserved.''Imports System.IOImports System.DrawingImports System.Collections.GenericImports System.LinqImports System.NumericsImports GrapeCity.Documents.DrawingImports GrapeCity.Documents.TextImports GrapeCity.Documents.ImagingImports GCTEXT = GrapeCity.Documents.TextImports GCDRAW = GrapeCity.Documents.Drawing
'' This sample demonstrates how to use GcBitmap.AutoLevel()'' to automatically adjust the output levels of an image.Public Class AutoLevels Function GenerateImage( ByVal pixelSize As Size, ByVal dpi As Single, ByVal opaque As Boolean, Optional ByVal sampleParams As String() = Nothing) As GcBitmap
opaque = True Dim bmp = New GcBitmap(pixelSize.Width, pixelSize.Height, opaque, dpi, dpi) Using origBmp = New GcBitmap() '' Load a sample photo: Dim imagePath = Path.Combine("Resources", "ImagesBis", "red-yellow-wall.jpg") Using stm = New FileStream(imagePath, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, FileOptions.RandomAccess) origBmp.Load(stm) End Using
'' Resize the original photo to fit two versions on the resulting bitmap: Dim w = pixelSize.Width Dim h = pixelSize.Height / 2 Using sizedBmp = origBmp.Resize(w, h, InterpolationMode.Cubic) '' Copy the resized original into the upper half of the resulting bitmap: bmp.BitBlt(sizedBmp, 0, 0) '' Auto adjust levels of the original And copy the result into the lower half: sizedBmp.AutoLevel() bmp.BitBlt(sizedBmp, 0, h) End Using
'' Add captions (original And adjusted images): Dim lineh = 2 Using g = bmp.CreateGraphics(Nothing) Dim forColor = Color.Yellow Dim bakColor = Color.Blue Dim fnt = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "FreeMono.ttf")) g.DrawLine(0, h, w * 2, h, New GCDRAW.Pen(Color.Gray, lineh * 2)) Dim tf = New TextFormat() With {.Font = fnt, .FontSize = 18, .ForeColor = forColor, .BackColor = bakColor, .FontBold = True} Dim th = g.MeasureString("QWERTY", tf).Height g.DrawString(" Original image ", tf, New PointF(0, h - th + lineh)) g.DrawString(" Auto levels applied ", tf, New PointF(0, h * 2 + lineh - th + lineh)) End Using End Using Return bmp End FunctionEnd Class