PDF for WPF and Silverlight Overview > Features: PDF for WPF and Silverlight > Adding Graphics |
The C1PdfDocument class exposes several methods that allow you to add graphical elements to your documents, including lines, rectangles, ellipses, pies, arcs, rounded rectangles, polygons, Bezier curves, and so on.
The methods are a subset of those found in the .NET Graphics class, and use the same Brush and Pen classes to control the color and style of the lines and filled areas.
It is important to remember that PDF for WPF uses a coordinate system based on points, with the origin located at the top left of the page. (The default coordinate system for the .NET Graphics class is pixel-based.)
The example below illustrates how similar the graphics methods are between PDF for WPF and the .NET Graphics class. The sample declares a C1PdfDocument class called 'pdf' and calls method to draw pies, Bezier curve, and other graphical elements.
The point of the sample is that if you replaced the C1PdfDocument class with a regular .NET Graphics object, you would be able to compile the code and get the same results.
VB |
Copy Code
|
---|---|
' set up to draw 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) ' draw on pdf document 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) ' show a Bezier curve Dim pts = New Point() {New Point(400, 100), New Point(420, 30), New Point(500, 140), New Point(530, 20)} ' draw Bezier pdf.DrawBezier(New C1.WPF.Pdf.Pen(Colors.Blue, 4), pts(0), pts(1), pts(2), pts(3)) ' show Bezier control points 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# |
Copy Code
|
---|---|
// set up to draw 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); // draw on pdf document 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); // show a Bezier curve var pts = new Point[] { new Point(400, 100), new Point(420, 30), new Point(500, 140), new Point(530, 20), }; // draw Bezier pdf.DrawBezier(new C1.WPF.Pdf.Pen(Colors.Blue, 4), pts[0], pts[1], pts[2], pts[3]); // show Bezier control points pdf.DrawLines(Colors.Gray, pts); foreach (Point pt in pts) { pdf.FillRectangle(Colors.Red, pt.X - 2, pt.Y - 2, 4, 4); } |
Here is the resulting PDF document: