PDF for WPF and Silverlight
グラフィックの追加
PDF for WPF/Silverlight の概要 > 機能:PDF for WPF/Silverlight > グラフィックの追加

C1PdfDocument クラスは、線、四角形、楕円、扇形、円弧、角丸長方形、多角形、ベジェ曲線などのグラフィック要素をドキュメントに追加するメソッドを公開します。

これらのメソッドは、.NET の Graphics クラスにあるメソッドのサブセットです。また、色、線のスタイル、領域の塗りつぶしの制御に同じ Brush クラスと Pen クラスを使用します。

PDF for WPF で使用される座標系がページの左上隅を原点とし、ポイントベースであることを常に意識してください。(.NET Graphics クラスのデフォルトの座標系はピクセルベースです。)

次の例で、PDF for WPF と .NET Graphics クラスの描画メソッドが似ていることがわかります。サンプルでは、'g' という C1PdfDocument クラスを宣言し、扇形、スプラインなどのグラフィック要素を描画するメソッドを呼び出します。

このサンプルのポイントは、C1PdfDocument クラスを通常の .NET Graphics オブジェクトに置き換えても、コードをコンパイルして同じ結果を得ることができるということです。

Visual Basic でコードを書く場合

Visual Basic
コードのコピー
' 描画の設定を行います。
Dim rc As New Rect(0, 0, 300, 200)
Dim text As String = "Hello world of .NET Graphics and PDF." & vbCr & vbLf & "Nice to meet you."
Dim font As New Font("Times New Roman", 12, PdfFontStyle.Italic Or PdfFontStyle.Underline)
' PDFドキュメントで描画します。
Dim penWidth As Integer = 0
Dim penRGB As Byte = 0
pdf.FillPie(Colors.Red, rc, 0, 20F)
pdf.FillPie(Colors.Green, rc, 20F, 30F)
pdf.FillPie(Colors.Blue, rc, 60F, 12F)
pdf.FillPie(Colors.Orange, rc, -80F, -20F)
For startAngle As Single = 0 To 359 Step 40
Dim penColor As Color = Color.FromArgb(&Hff, penRGB, penRGB, penRGB)
Dim pen As New C1.WPF.Pdf.Pen(penColor, System.Math.Max(System.Threading.Interlocked.Increment(penWidth),penWidth - 1))
    penRGB = CByte(penRGB + 20)
    pdf.DrawArc(pen, rc, startAngle, 40F)
Next
pdf.DrawRectangle(Colors.Red, rc)
pdf.DrawString(text, font, Colors.Black, rc)
' ベジェ曲線を表示します。
Dim pts = New Point() {New Point(400, 100), New Point(420, 30), New Point(500, 140), New Point(530, 20)}
' ベジェを描画します。
pdf.DrawBezier(New C1.WPF.Pdf.Pen(Colors.Blue, 4), pts(0), pts(1), pts(2), pts(3))
' ベジェのコントロールポイントを表示します。
pdf.DrawLines(Colors.Gray, pts)
For Each pt As Point In pts
    pdf.FillRectangle(Colors.Red, pt.X - 2, pt.Y - 2, 4, 4)
Next

C# でコードを書く場合

                 
C#
コードのコピー
// 描画の設定を行います。
Rect rc = new Rect(0, 0, 300, 200);
string text = "Hello world of .NET Graphics and PDF.\r\nNice to meet you.";
Font font = new Font("Times New Roman", 12, PdfFontStyle.Italic | PdfFontStyle.Underline);

// PDFドキュメントで描画します。
int penWidth = 0;
byte penRGB = 0;
pdf.FillPie(Colors.Red, rc, 0, 20f);
pdf.FillPie(Colors.Green, rc, 20f, 30f);
pdf.FillPie(Colors.Blue, rc, 60f, 12f);
pdf.FillPie(Colors.Orange, rc, -80f, -20f);
for (float startAngle = 0; startAngle < 360; startAngle += 40)
{
    Color penColor = Color.FromArgb(0xff, penRGB, penRGB, penRGB);
    C1.WPF.Pdf.Pen pen = new C1.WPF.Pdf.Pen(penColor, penWidth++);
    penRGB = (byte)(penRGB + 20);
    pdf.DrawArc(pen, rc, startAngle, 40f);
}
pdf.DrawRectangle(Colors.Red, rc);
pdf.DrawString(text, font, Colors.Black, rc);

// ベジェ曲線を表示します。
var pts = new Point[]
{
    new Point(400, 100), new Point(420,  30),
    new Point(500, 140), new Point(530,  20),
};

//  ベジェを描画します。
pdf.DrawBezier(new C1.WPF.Pdf.Pen(Colors.Blue, 4), pts[0], pts[1], pts[2], pts[3]);

// ベジェのコントロールポイントを表示します。
pdf.DrawLines(Colors.Gray, pts);
foreach (Point pt in pts)
{
    pdf.FillRectangle(Colors.Red, pt.X - 2, pt.Y - 2, 4, 4);
}

 

次のような PDF ドキュメントが出力されます。