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;
}
}
}