AllBlendingModes.vb
- ''
- '' This code is part of Document Solutions for Imaging demos.
- '' Copyright (c) MESCIUS inc. All rights reserved.
- ''
- Imports System.IO
- Imports System.Drawing
- Imports System.Collections.Generic
- Imports System.Linq
- Imports System.Numerics
- Imports GrapeCity.Documents.Drawing
- Imports GrapeCity.Documents.Text
- Imports GrapeCity.Documents.Imaging
- Imports GCTEXT = GrapeCity.Documents.Text
- Imports GCDRAW = GrapeCity.Documents.Drawing
-
- '' 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", "cour.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 Function
- End Class
-