DioDocs for PDF
ソフトマスク
機能 > ソフトマスク

ソフトマスクは、位置に依存するマスク値のソースとして使用される透明グループ XObject、およびグループ合成に対する色空間によって表されます。また、グループ結果からマスク値への変換を制御する他のエントリも含まれています。ソフトマスクを使用して、オブジェクトまたはグループの形状を変更し、オブジェクトとその背景との間の段階的な移行のような効果を生み出すことができます。ソフトマスクの詳細については、 PDF 1.7 仕様 を参照してください。

DioDocs for PDF では、SoftMask クラスの Create メソッドを使用して、ソフトマスクを作成できます。このメソッドは、対象のドキュメントとマスクが適用される範囲をパラメータとして受け取ります。その後、SoftMask クラスの FormXObject の Graphics プロパティを使用して、ソフトマスクのグラフィックを取得します。これらのグラフィックスを描画してマスクを設計し、マスクを作成したら、Pdf Document Graphics クラスの SoftMask プロパティに割り当てて、PDF ドキュメントのグラフィックスに適用できます。

メモ:

DioDocs for PDF を使用してソフトマスクを作成するには

  1. GcPdfDocument クラスを初期化して、対象のPDF ドキュメントを作成します。
  2. SoftMask クラスの Create メソッドを呼び出して、SoftMaskクラスのオブジェクトを作成します。
  3. SoftMask クラスの FormXObject プロパティを使用して、アルファチャンネルのソースとして使用される透明グループ Xobject を取得します。
  4. FormXObject のコンテンツを生成するために、GcPdfGraphics クラスのインスタンスを返す FormXObject クラスの Graphics プロパティを使用してそのグラフィックにアクセスします。
  5. 返された GcPdfGraphics オブジェクトのさまざまな描画方法を使用して、ソフトマスクを設計します。
  6. 作成したソフトマスクを対象の PDF ドキュメントのグラフィックスオブジェクトの SoftMask プロパティに割り当てて、ソフトマスクを適用します。
C#
コードのコピー
public int CreatePDF(Stream stream)
{
    var doc = new GcPdfDocument();
    var page = doc.NewPage();
    var g = page.Graphics;

    var rMask = new RectangleF(0, 0, 72 * 5, 72 * 2);
    var rDoc = new RectangleF(36, 36, rMask.Width, rMask.Height);

    var softMask = SoftMask.Create(doc, rDoc);
    var smGraphics = softMask.FormXObject.Graphics;
    smGraphics.FillEllipse(rMask, Color.FromArgb(128, Color.Black));
    smGraphics.DrawString("SOLID TEXT",
    new TextFormat() { Font = StandardFonts.HelveticaBold, FontSize = 52, ForeColor = Color.Black },
    new RectangleF(rMask.X, rMask.Y, rMask.Width, rMask.Height),
    TextAlignment.Center, ParagraphAlignment.Center, false);
    var rt = rMask;
    rt.Inflate(-8, -8);
    //アルファチャンネルのみが重要で、マスクの色は必要ありません
    smGraphics.DrawEllipse(rt, Color.Red);
    g.SoftMask = softMask;
    g.DrawImage(Image.FromFile(Path.Combine("Resources", "Images", "reds.jpg")),
        rDoc, null, ImageAlign.StretchImage);
    // 完了
    doc.Save(stream);
    return doc.Pages.Count;
}

先頭に戻る

DioDocs for PDFを使用したソフトマスクの実装の詳細については、DioDocs for PDFサンプルブラウザを参照してください。