AllBlendingModes.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.Text
'' This sample demonstrates composing two images using the available blending modes.'' The sample uses the same approach as the BlendingModes sample,'' but instead of showing a few of the available modes that produce'' a nice looking result, demonstrates all of them in smaller scale.'' The base and the blended images used as the same as in the BlendingModes sample.Public Class AllBlendingModes Function GenerateImage( ByVal pixelSize As Size, ByVal dpi As Single, ByVal opaque As Boolean, Optional ByVal sampleParams As String() = Nothing) As GcBitmap
Dim bmp = New GcBitmap(pixelSize.Width, pixelSize.Height, opaque, dpi, dpi) Using origBmp = New GcBitmap(), spectrumBmp = New GcBitmap() '' Load a sample photo: Dim imagePath = Path.Combine("Resources", "ImagesBis", "orchid.jpg") Using stm = New FileStream(imagePath, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, FileOptions.RandomAccess) origBmp.Load(stm) End Using
'' Blending source: Dim spectrumPath = Path.Combine("Resources", "ImagesBis", "spectrum-pastel-500x500.png") Using stm = New FileStream(spectrumPath, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, FileOptions.RandomAccess) spectrumBmp.Load(stm)
spectrumBmp.Opaque = opaque origBmp.Opaque = opaque
'' Resize the original photo so we can place 4 samples of it '' on the resulting bitmap: Dim w = pixelSize.Width / 4 Dim h = pixelSize.Height / 4 Using g = bmp.CreateGraphics() '' Prepare for captions: Dim tl = g.CreateTextLayout() tl.DefaultFormat.Font = GCTEXT.Font.FromFile(Path.Combine("Resources", "Fonts", "FreeMono.ttf")) tl.DefaultFormat.FontSize = 12 tl.ParagraphAlignment = ParagraphAlignment.Center tl.TextAlignment = TextAlignment.Center tl.MaxWidth = w tl.MaxHeight = h tl.MarginTop = h - g.MeasureString("QWERTY", tl.DefaultFormat).Height * 1.4F '' Render all 16 blending modes in a 4x4 grid Using sizedBmp = origBmp.Resize(w, h, InterpolationMode.Cubic), sizedSpectrumBmp = spectrumBmp.Resize(w, h) For row = 0 To 3 For col = 0 To 3 '' Sample: Dim blendMode = CType(row * 4 + col, BlendMode) Dim x = w * col, y = h * row bmp.BitBlt(sizedBmp, x, y) bmp.CompositeAndBlend(sizedSpectrumBmp, x, y, CompositeMode.SourceOver, blendMode) '' Caption: tl.Clear() tl.Append(blendMode.ToString()) tl.PerformLayout(True) Dim rc = tl.ContentRectangle rc.Offset(x, y) rc.Inflate(4, 2) g.FillRectangle(rc, Color.White) g.DrawTextLayout(tl, New PointF(x, y)) Next Next End Using End Using End Using End Using Return bmp End FunctionEnd Class