RichTextBox内の各オブジェクトを印刷する
オブジェクトを指定して、必要個所を印刷する
Silverlight 4では、印刷機能がサポートされました。しかも、任意のオブジェクトを指定しての印刷が可能となっています。Silverlightアプリケーションの画面を印刷したい場合、Silverlight 3以前のように、ブラウザの印刷機能を使用する必要はありません。
第6回では、この印刷機能を使ったサンプルを紹介します。
このサンプルのプロジェクト・ファイルは、こちらからダウンロードできます。
今回実装する処理は、RichTextBoxコントロール全体を印刷したり、その中にレイアウトしたMediaElementやDataGridコントロールを指定して部分的に印刷するというものです。
実行画面には、「全て印刷」「動画印刷」「表印刷」の3つのボタンをレイアウトしておき、印刷範囲を指定できるようにします(図1)。
DataGridの表のデータは、プリンタに「Microsoft XPS Document Writer」を指定して書き出しています(図2)。[印刷(P)]ボタンをクリックすると、任意のフォルダに「ファイル名を付けて保存」することができます(図3)。保存したXPS形式のファイルは、XPSビューアで閲覧することができ(図4)、デジタル署名や印刷や検索が可能です。
もちろん、XPS形式で出力するだけではなく、プリンタを指定しての出力も可能ですので、試してみてください。
図1: 「全て印刷」「動画印刷」「表印刷」の3つのボタンで、印刷対象を設定する |
図2: 出力方法として、ここではMicrosoft XPS Document Writerを指定している |
図3: [印刷(P)]ボタンをクリックして「ファイル名を付けて保存」する。デスクトップ上にDataGrid.xpsという名前で保存している |
図4: 保存したxpsファイルをダブル・クリックすると、XPSビューアが起動して閲覧できる。全て印刷した結果(上)、動画の印刷結果(中)、表の印刷結果(下) |
RichTextBoxコントロールのレイアウト
前回までのサンプル作成時と同様の手順で、新規Silverlight 4プロジェクト(プロジェクト名は「SL4_RichTextBox_Print」)を作成してください。プロジェクト依存関係も設定してください。
UserControlのPropertiesペインの[Layout]を展開して、Widthに800、Heightに600を指定します。
Toolboxからタイトルを表示させるTextBlockと、Buttonを1個レイアウトしてください。ButtonのWidthやHeightや文字サイズを指定し、Contentに「全て印刷」と入力します。このButtonをコピーして、2回ペーストし、同じスタイルのButtonを増やします。それらのContentは、それぞれ「動画印刷」「表印刷」としておきます。
次に、RichTextBoxコントロールをレイアウトし、プレス&ドラッグして任意のサイズに広げます(図5)。IsReadOnlyプロパティにチェックを付け、編集を不可にしておきます。この設定をしなければ、RichTextBox内にレイアウトしたHyperlinkコントロールを選択してクリックすることができません。
図5: TextBlock、3個のButton、RichTextBoxをレイアウトする |
この
リスト1のように、
リスト1: RichTextBox内に追加するスタイル付きのサンプル・データ
印刷する場合は、