2011-06-20 6 views
1

大型キャンバスのサブセクションからページを印刷しようとすると、ビジュアルブラシを使用して不快感が増えました。一般的には動作しますが、一部の部品をラスタライズする傾向があり、出力が悪くなります。 (私は以前これについて質問してきた)。WPF - コンテントの内容をジオメトリとしてクローン化する

これで、同じ内容のキャンバスのコピーをたくさん作成し、無欠な部分を1ページとして印刷します。これは動作しますが、明らかに遅く、より多くのページでは遅くなります。

でも、うまくいくのはビジュアルブラシに似た何かの方法がありますが、その代わりにある種の新しいジオメトリオブジェクトとして "ビュー"の内容をコピーすることですか?私のキャンバスの内容は、線や画像などの組み合わせです。なので、ブラシのビューを定義し、すべてのベクトルとラスタオブジェクトの交差コピーを新しい何らかの種類の容器。

これにより、1つのキャンバスを使用して、個々のページを印刷するために異なる場所でコンテンツの「スナップショット」を取ることができます。

答えて

0

RenderTargetBitmapを使用して、キャンバスのビットマップコピーを取得し、必要な部分をトリミングすることができます。ベクトルコピーが特に必要な場合は、キャンバスをXPSに書き出す必要があります。

編集:ベクトルコピーが必要な場合は、XamlWriter.Saveを使用して試してみましたか?Xamlを編集してからXamlReader.Load?

+0

ええ、ラスタライズを避けることが私の目標です。そうは間違いありません。 –

+0

私の答えに新しい方法、XamlWriterが追加されました。 –

関連する問題