GetContentRect.cs
// 
// このコードは、DioDocs for Imaging のサンプルの一部として提供されています。
// © MESCIUS inc. All rights reserved.
// 
using System;
using System.IO;
using System.Drawing;
using System.Collections.Generic;
using System.Linq;
using GrapeCity.Documents.Drawing;
using GrapeCity.Documents.Text;
using GrapeCity.Documents.Imaging;

namespace DsImagingWeb.Demos
{
    // このサンプルは、画像の単色マージンをトリミングすることが可能な
    // GcBitmap.GetContentRect() メソッドの使用方法を示します。
    public class GetContentRect
    {
        public GcBitmap GenerateImage(Size pixelSize, float dpi, bool opaque, string[] sampleParams = null)
        {
            // 元の金魚の画像は、実際の魚の周囲に余白がある白い背景です。
            var origImagePath = Path.Combine("Resources", "Stock", "goldfish.jpg");

            // 結果のビットマップを作成します。
            var targetBmp = new GcBitmap(pixelSize.Width, pixelSize.Height, true, dpi, dpi);
            using (var origBmp = new GcBitmap())
            {
                // 金魚の画像を読み込みます。
                using (var stm = new FileStream(origImagePath, FileMode.Open, FileAccess.Read, FileShare.Read, 4096, FileOptions.RandomAccess))
                    origBmp.Load(stm);
                // 結果のビットマップ上にGraphicsを作成し、青色で塗りつぶします。
                using (var g = targetBmp.CreateGraphics(Color.FromArgb(unchecked((int)0xff004d99))))
                {
                    // 白い背景のまま金魚を描画します。
                    targetBmp.BitBlt(origBmp, 0, 0);
                    // GetContentRect() メソッドは、指定された色(この場合は白)の
                    // 余白を除いた画像の領域を返します。
                    var rc = origBmp.GetContentRect(Color.White);
                    // コンテンツの矩形領域に赤い境界線を描画します。
                    g.DrawRectangle(rc, Color.Red);
                }
            }
            return targetBmp;
        }
    }
}