AutoContrast.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 GrayscaleBitmap.AutoContrast()'' to automatically adjust the contrast of a black and white image.Public Class AutoContrast 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", "tremblant.png") Dim grayBmp As GrayscaleBitmap Using stm = New FileStream(imagePath, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, FileOptions.RandomAccess) origBmp.Load(stm) origBmp.Opaque = opaque grayBmp = origBmp.ToGrayscaleBitmap() 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 the contrast of the original image and copy the result into the lower half: grayBmp.AutoContrast() Using tbmp = grayBmp.ToGcBitmap() bmp.BitBlt(tbmp, 0, h) End Using End Using
'' Add captions (original and adjusted images): Dim lineh = 2 Using g = bmp.CreateGraphics(Nothing) Dim foreColor = Color.Yellow Dim backColor = 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 = foreColor, .BackColor = backColor, .FontBold = True} Dim th = g.MeasureString("QWERTY", tf).Height g.DrawString(" Original image ", tf, New PointF(0, h - th + lineh)) g.DrawString(" Auto contrast applied ", tf, New PointF(0, h * 2 + lineh - th + lineh)) End Using End Using Return bmp End FunctionEnd Class