DioDocs for PDF
ブレンドモード
機能 > グラフィック > ブレンドモード

ブレンドモードは、コンピュータグラフィックスで使用されており、画面上に既に表示されている色と上から新しく描画する色が互いにどのように合成または混合されるかを決定します。つまり、ブレンドモードは、別の色が適用されたときに、色付きピクセルの色を決定します。既定のブレンドモードはBlendMode.Normalであり、元の色を新しい色に置き換えます。

GcPdfGraphicsクラスは、基本のGcGraphicsクラスの抽象プロパティとメソッドのPDF固有のオーバーライドを提供することにより、ブレンドモードをサポートします。

次の画像は、PDFドキュメントの2つの画像に適用したさまざまなブレンドモードを示します。

ブレンドモードを適用するには、

  1. ImageクラスのFromFileメソッドを使用して、ブレンドモードが適用される画像をロードします。
  2. CreateTextLayoutメソッドをインスタンス化し、TextLayoutクラスのさまざまなプロパティを使用して、ブレンドモードのキャプションを追加するためにテキストレイアウトを作成します。
  3. BlendModeプロパティを使用してロードされた画像にさまざまなブレンドモードを適用して、すべての画像をグリッドに描画します。
    C#
    コードのコピー
    var doc = new GcPdfDocument();
    var page = doc.NewPage();
    var g = page.Graphics;
    
    var iorchid = Image.FromFile(Path.Combine("Resources", "ImagesBis", "orchid.jpg"));
    var ispectr = Image.FromFile(Path.Combine("Resources", "ImagesBis", "spectrum.png"));
    
    const int margin = 36;
    const int NCOLS = 4;
    var w = (int)((page.Size.Width - margin * 2) / NCOLS);
    var h = (int)((iorchid.Height * w) / iorchid.Width);
    
    // キャプションに対してテキストレイアウトを設定します
    var tl = g.CreateTextLayout();
    tl.DefaultFormat.Font = Font.FromFile(Path.Combine("Resources", "Fonts", "cour.ttf"));
    tl.DefaultFormat.FontSize = 12;
    tl.ParagraphAlignment = ParagraphAlignment.Center;
    tl.TextAlignment = TextAlignment.Center;
    tl.MaxWidth = w;
    tl.MaxHeight = h;
    tl.MarginTop = h - g.MeasureString("QWERTY", tl.DefaultFormat).Height * 1.4f;
    
    int row = 0, col;
    // グリッドにすべてのブレンドモードを描画します
    var modes = Enum.GetValues(typeof(BlendMode));
    for (int i = 0; i < 2; ++i)
    {
        row = col = 0;
        Image iback, ifore;
        if (i == 0)
        {
            iback = ispectr;
            ifore = iorchid;
        }
        else // i == 1
        {
            iback = iorchid;
            ifore = ispectr;
            page = doc.Pages.Add();
            g = page.Graphics;
        }
        foreach (var mode in modes)
        {
            var blendMode = (BlendMode)mode;
            if (!g.IsBlendModeSupported(blendMode))
                continue;
    
            int x = margin + w * col;
            int y = margin + h * row;
            var r = new RectangleF(x, y, w, h);
    
            g.BlendMode = BlendMode.Normal;
            g.DrawImage(iback, r, null, ImageAlign.StretchImage);
            g.BlendMode = blendMode;
            g.DrawImage(ifore, r, null, ImageAlign.StretchImage);
            g.BlendMode = BlendMode.Normal;
    
            // キャプション
            tl.Clear();
            tl.Append(blendMode.ToString());
            tl.PerformLayout(true);
            var rc = tl.ContentRectangle;
            rc.Offset(x, y);
            rc.Inflate(4, 2);
            g.FillRectangle(rc, Color.White);
            g.DrawTextLayout(tl, new PointF(x, y));
            nextRowCol();
        }
    }
    doc.Save(stream);
    //
    void nextRowCol()
    {
        if (++col == NCOLS)
        {
            col = 0;
            ++row;
        }
    }
    

制限

色相、彩度、カラー、輝度のブレンドモードは、PDF仕様ではサポートされていないため、DioDocs for PDFでもサポートされていません。