BitmapImage を印刷する最良の方法は何ですか? 私は System.Drawing のバックグラウンドを持っているので、ビットマップに変換してから印刷することを考えていましたが、おそらくもっと良い方法があると思います。
ありがとう!
ドリューの答えに基づいて、PrintVisual メソッドに渡されるコンテナーを測定して配置するのが最善です。これにより、8.5 x 11 の用紙より大きいイメージが切り取られるのを防ぐことができます。画面に部分的に表示された画像を印刷する方法の例を次に示します。
PrintDialog dlg = new PrintDialog();
bool? result = dlg.ShowDialog();
if (result.HasValue && result.Value)
{
ImageViewer.Measure(new Size(dlg.PrintableAreaWidth, dlg.PrintableAreaHeight));
ImageViewer.Arrange(new Rect(new Point(0, 0), ImageViewer1.DesiredSize));
dlg.PrintVisual(ImageViewer, "Print a Large Image");
}
この例の ImageViewer は、stackpanel、canvas、grid などの任意の UIElement コンテナーに置き換えることができます。ImageViewer.Source は、印刷の準備ができている BitmapImage に設定する必要があります。
このページからアイデアを得ました: http://www.switchonthecode.com/tutorials/printing-in-wpf
クラスをチェックしてPrintDialog
ください。あなたがする必要があるのは、あなたをソースとして持つビジュアルとしてを渡すメソッドを呼び出すことだけです。PrintVisual
Image
BitmapImage
他の印刷オプションをセットアップしたい場合もありますが、PrintDialog と関連 API を調べているうちに、それらを見つけることができます。