ShowLoClippingTiff.vb
'' 
'' このコードは、DioDocs for Imaging のサンプルの一部として提供されています。
'' © 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

'' このサンプルでは、シャドウのクリッピングが発生した
'' ピクセルを検出し、表示する方法を示します。
'' 本サンプルは ShowLoClippingJpeg と同一の内容ですが、
'' 同一の元画像から作成したJPEGではなくTIFF画像を使用します。
Public Class ShowLoClippingTiff
    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", "clivia.tiff"))
            '' BitBltを実行するには、両方の画像の不透明度が同じである必要があります。
            bmpSrc.Opaque = opaque
            '' コピー元の画像をターゲットのビットマップ上に描画します。
            '' (通常は最初にコピー元画像をリサイズしますが、このケースでは
            '' コピー元画像がターゲットと同じサイズであることを知っているため、
            '' そのステップをスキップします。)
            bmp.BitBlt(bmpSrc, 0, 0)

            Using g = bmp.CreateGraphics()
                For i = 0 To bmp.PixelWidth - 1
                    For j = 0 To bmp.PixelHeight - 1
                        '' すべての色が 0x00 の場合、そのピクセルの色をマゼンタに変更します。
                        If (bmp(i, j) And &HFFFFFF) = 0 Then
                            bmp(i, j) = &HFFFF00FFUI
                        End If
                    Next
                Next
                '' 比較のために、左上隅に元のサンプル画像を描画します。
                Dim rc = New RectangleF(0, 0, pixelSize.Width / 4, pixelSize.Height / 4)
                g.DrawImage(bmpSrc, rc, Nothing, ImageAlign.StretchImage)
                g.DrawRectangle(rc, Color.LightGray)
            End Using
        End Using
        Return bmp
    End Function
End Class