SwapColors.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
-
- '' This sample demonstrates how to swap color channels on an image
- '' using pixel access. Here we swap red and blue channels to
- '' change the way the image looks.
- Public Class SwapColors
- 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 bmpSrc = New GcBitmap(Path.Combine("Resources", "ImagesBis", "alpamayo-sq.jpg"))
- '' BitBlt requires the opacity of both images to be the same:
- bmpSrc.Opaque = opaque
- '' Render source image onto the target bitmap
- '' (generally we might want to resize the source image first,
- '' but in this case we just know that the source image has
- '' the same size as the target, so skip this step):
- bmp.BitBlt(bmpSrc, 0, 0)
-
- Using g = bmp.CreateGraphics()
- For i = 0 To bmp.PixelWidth - 1
- For j = 0 To bmp.PixelHeight - 1
- Dim px = bmp(i, j)
- px = ((px And &HFFUI) << 16) Or ((px And &HFF0000UI) >> 16) Or (px And &HFF00FF00UI)
- bmp(i, j) = px
- Next
- Next
- '' Draw the original image in the bottom right corner for reference:
- Dim sx = pixelSize.Width / 3, sy = pixelSize.Height / 3
- g.DrawImage(bmpSrc, New RectangleF(sx * 2, sy * 2, sx, sy), Nothing, ImageAlign.StretchImage)
- End Using
- End Using
- Return bmp
- End Function
- End Class
-