[]
ソフトマスクは、位置に依存するマスク値のソースとして使用される透明グループ XObject、およびグループ合成に対する色空間によって表されます。また、グループ結果からマスク値への変換を制御する他のエントリも含まれています。ソフトマスクを使用して、オブジェクトまたはグループの形状を変更し、オブジェクトとその背景との間の段階的な移行のような効果を生み出すことができます。ソフトマスクの詳細については、 PDF 1.7 仕様 を参照してください。
DioDocs for PDF では、SoftMask クラスの Create メソッドを使用して、ソフトマスクを作成できます。このメソッドは、対象のドキュメントとマスクが適用される範囲をパラメータとして受け取ります。その後、SoftMask クラスの FormXObject の Graphics プロパティを使用して、ソフトマスクのグラフィックを取得します。これらのグラフィックスを描画してマスクを設計し、マスクを作成したら、Pdf Document Graphics クラスの SoftMask プロパティに割り当てて、PDF ドキュメントのグラフィックスに適用できます。
type=note
メモ:
- マスクのアルファチャンネルのみが使用されます。透明な領域は完全にマスクしますが、単色の領域がまったくマスクしません。半透明な領域は、アルファ値に反比例してマスクします。
- いくつかの PDF ビューワでは、新しいマスクを割り当てる前にマスクをリセットしないと、ソフトマスクの変更を正しく処理できないビューワーが存在します。Graphics オブジェクトの SoftMask プロパティを「none」に設定することで、マスクをリセットできます。

DioDocs for PDF を使用してソフトマスクを作成するには
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サンプルブラウザを参照してください。