グラフィックスの描画
続いて、ページのタイトルをグラフィックスメソッドで描画します。
まず、RenderGraphicsクラスのコンストラクタを実行して、RenderGraphicsオブジェクトを作成します。次に、.NET FrameworkクラスライブラリのSystem.Drawing名前空間にあるGraphicsクラスの、FillEllipseメソッドで楕円を、DrawStringメソッドで見出しの文字を描画します。見出し文字は、楕円にかぶさるように配置します。
![FillEllipseメソッドで楕円を、DrawStringメソッドで見出しの文字を描画する](http://cz-cdn.shoeisha.jp/static/images/article/5525/Image5.gif)
そして、前回の記事で紹介した方法で、テキストファイル「sample3.txt」の中身をドキュメントに流し込みます。
' グラフィックスを作成 C1PrintDocument1.StartDoc() Dim rg1 As New RenderGraphics() rg1.Graphics.FillEllipse(Brushes.Aqua, 100, 100, 50, 50) rg1.Graphics.DrawString("ComponentOne ColorPicker for Silverlight について", New Font("MSゴシック", 14, FontStyle.Bold), Brushes.Blue, 120, 110) C1PrintDocument1.EndDoc()
' 段落 para3 を作成 Dim para3 As New RenderParagraph() fname = Application.StartupPath & "\sample3.txt" data = "" 'ファイルから文字列を読み込む Try Dim sr As StreamReader = New StreamReader(fname, System.Text.Encoding.Default) Do data = sr.ReadLine() para3.Content.AddText(data) Loop Until data Is Nothing sr.Close() Catch ex As Exception MessageBox.Show(ex.Message) End Try
// グラフィックスを作成 c1PrintDocument1.StartDoc(); RenderGraphics rg1 = new RenderGraphics(); rg1.Graphics.FillEllipse(Brushes.Aqua, 100, 100, 50, 50); rg1.Graphics.DrawString("ComponentOne ColorPicker for Silverlight について", new Font("MSゴシック", 14, FontStyle.Bold), Brushes.Blue, 120, 110); c1PrintDocument1.EndDoc(); // 段落 para3 を作成 RenderParagraph para3 = new RenderParagraph(); fname = Application.StartupPath + "/sample3.txt"; data = ""; //ファイルから文字列を読み込む try { StreamReader sr = new StreamReader(fname, System.Text.Encoding.Default); while (data != null) { data = sr.ReadLine(); para3.Content.AddText(data); } sr.Close(); } catch (Exception ex) { MessageBox.Show(ex.Message); }
イメージ画像の挿入
続いて、ファイルにあるイメージ画像を読み込み、ドキュメントに挿入します。これは、RenderImageクラスをオブジェクト化し、Imageプロパティにファイルの画像を指定するだけです。作成したグラフィックス、段落、イメージをそれぞれBodyセクションに追加し、Generateメソッドでドキュメントを作成すればページのできあがりです。
' RenderImage を作成します。 C1PrintDocument1.StartDoc() Dim img As New RenderImage fname = Application.StartupPath & "\sample.jpg" img.Image = System.Drawing.Image.FromFile(fname) img.Width = "100%" C1PrintDocument1.EndDoc() ' 段落をドキュメントに追加 C1PrintDocument1.Body.Children.Add(rg1) C1PrintDocument1.Body.Children.Add(para3) C1PrintDocument1.Body.Children.Add(img) C1PrintDocument1.Generate()
// RenderImage を作成します。 c1PrintDocument1.StartDoc(); RenderImage img = new RenderImage(); fname = Application.StartupPath + "/sample.jpg"; img.Image = System.Drawing.Image.FromFile(fname); img.Width = "100%"; c1PrintDocument1.EndDoc(); // 段落をドキュメントに追加 c1PrintDocument1.Body.Children.Add(rg1); c1PrintDocument1.Body.Children.Add(para3); c1PrintDocument1.Body.Children.Add(img); c1PrintDocument1.Generate();