ImageTransparency.cs
// 
// このコードは、DioDocs for PDF のサンプルの一部として提供されています。
// © MESCIUS inc. All rights reserved.
// 
using System;
using System.IO;
using System.Drawing;
using GrapeCity.Documents.Pdf;
using GrapeCity.Documents.Text;
using GrapeCity.Documents.Drawing;
using GCTEXT = GrapeCity.Documents.Text;
using GCDRAW = GrapeCity.Documents.Drawing;

namespace DsPdfWeb.Demos
{
    // このサンプルは、特定の透明度(不透明度)を使用して画像を描画できることを示します。
    public class ImageTransparency
    {
        public int CreatePDF(Stream stream)
        {
            var doc = new GcPdfDocument();
            var page = doc.NewPage();
            var g = page.Graphics;

            var rc = Common.Util.AddNote(
                "GcPdfGraphics.DrawImage() メソッドは、指定された不透明度で画像をレンダリングすることを" +
                "可能にします。下の図は、不透明度0.2(ほぼ透明)、0.5(中程度の透明度)、1(不透明度)を" +
                "使用して画像を描画したランダムなテキストです。",
                page);

            var tl = g.CreateTextLayout();
            tl.DefaultFormat.Font = StandardFonts.Times;
            tl.DefaultFormat.FontSize = 12;
            tl.MaxWidth = page.Size.Width;
            tl.MaxHeight = page.Size.Height;
            tl.MarginAll = 36;
            tl.MarginTop += rc.Bottom;
            tl.Append(Common.Util.getString_ja(1, 0, 2));
            tl.PerformLayout(true);
            g.DrawTextLayout(tl, PointF.Empty);

            using (var image = GCDRAW.Image.FromFile(Path.Combine("Resources", "Images", "puffins.jpg")))
            {
                var imageRc = new RectangleF(tl.MarginLeft, tl.MarginTop, 144, 144);
                // 不透明度 0.2。
                g.DrawImage(image, imageRc, null, ImageAlign.ScaleImage, 0.2f);
                imageRc.Offset(imageRc.Width + 36, 0);
                // 不透明度 0.5。
                g.DrawImage(image, imageRc, null, ImageAlign.ScaleImage, 0.5f);
                imageRc.Offset(imageRc.Width + 36, 0);
                // 不透明度 1(デフォルト)。
                g.DrawImage(image, imageRc, null, ImageAlign.ScaleImage);

                // 注意: 使用された画像を破棄する前にドキュメントを保存する必要があります。
                doc.Save(stream);
            }
            return doc.Pages.Count;
        }
    }
}