今日私はWPFで作業しています!最後の機能を除いて、私のアプリはほぼ終了しています。私は、スーパーマーケットの棚の商品の下で見ることができるもののようなラベルを表すグラフィック要素を作成しました。それらのうちの1つは、PrintDialog.PrintVisual(myVisualItem,"description");
を使用して簡単に印刷できます。 ここでは、一連のPintVisual()をループで使用して、別々のドキュメントにすべての要素を印刷する一連のラベルを印刷する必要があります。視覚的なアイテムのIEnumerableを受け入れるPrintVisual()のオーバーロードはありません。私はこれらの要素を改ページする必要があることをオンラインで見てきましたが、私はそれを行う方法を見つけることができません何ができますか?ありがとう!複数のキャンバスWPFを印刷しますか?
答えて
あなたが持っているすべてのキャンバスを1つの大きなキャンバスにまとめてから、このキャンバスを印刷することができます。ここで
は一つの大きな一つに複数のキャンバスをCONCATする方法をいくつかのサンプルコードです:
public Canvas CombineCanvases(params Canvas[] canvases)
{
// Force each canvas to update its desired size
foreach (var canvas in canvases) { canvas.Measure(new Size(double.PositiveInfinity, double.PositiveInfinity)); }
var result = new Canvas
{
Height = canvases.Sum(x => x.DesiredSize.Height), // add all heights to get needed height
Width = canvases.Max(x => x.DesiredSize.Width) // find required width
};
var pos = 0d;
foreach (var canvas in canvases)
{
Canvas.SetLeft(canvas, 0);
Canvas.SetTop(canvas, pos); // position element at this pixel count
pos += canvas.DesiredSize.Height; // and increment it
result.Children.Add(canvas);
}
return result;
}
あなたは結果を印刷し、印刷したいすべてのキャンバスのを渡す必要があります。
var c1 = new Canvas
{
Width = 100,
Height = 100,
Children = { new TextBlock { Text = "Canvas 1" } }
};
var c2 = new Canvas
{
Width = 100,
Height = 100,
Children = { new TextBlock { Text = "Canvas 2" } }
};
var canvas = CombineCanvases(c1, c2);
// print canvas here
あなたは1ページに収まると、その後に大きなものにすべてのキャンバスをCONCATないが、ちょうど1ページを埋めるために必要な限り多くを取るどのように多くのラベルをチェックするとページネーションは次のようになります。
このページを印刷し、すべてラベルが印刷されるまでこれを繰り返します。これはページ番号と呼ばれます。
ご協力いただきありがとうございます。理解に非常に役に立ちました!おそらく私は自分自身を悪く表現しています。私たちが使っているプリンタは、すでに適切なフォーマットでラベルを印刷するように設定されているので、正しいページの寸法を設定して、すべてのラベルをページに入れてください。 –
私はラベルを変更しません(c1とc2はあなたのラベルです)。コードスニペットは1つの大きなキャンバスにそれらを配置し、それを印刷することができます。これにより、 '' 'PrintVisual'''を1回呼び出すだけで、1つのページに複数のラベルを印刷することができます – Iqon
もしそれらがすべて1ページに収まると思えば、Orientation = VerticalのStackPanelにそれらを入れることができます。スタックパネルを印刷します。
var panel = new StackPanel() { Orientation = Orientation.Vertical };
panel.Children.Add(canvas1);
panel.Children.Add(canvas2);
panel.UpdateLayout();
var dlg = new PrintDialog();
dlg.PrintVisual(panel, "description");
- 1. WPFで複数ページを印刷する
- 2. どのように複数ページのWPFを印刷しますか?
- 3. wpf印刷/印刷プレビューusercontrol
- 4. 複数のページにリストボックスを含むスタックパネルを印刷するwpf
- 5. WPF:複数ページのTextBlockを印刷する
- 6. WPF印刷フロードキュメント
- 7. WPFで印刷
- 8. html5キャンバス要素の印刷
- 9. WPF BitmapImageの印刷
- 10. pythonで複数回印刷する関数を印刷
- 11. キャンバス機能を使用した複数のページの印刷LineToとTextout
- 12. Javaから複数のPDFを単一の印刷ジョブとして印刷する(物理印刷)
- 13. fabricjsキャンバスを印刷していますか?
- 14. 複数のTelerikレポートを印刷しますか?
- 15. 複数の行をファイルに印刷しますか?
- 16. 印刷複数の列
- 17. 複数のWebViewで印刷
- 18. 整数をキャンバスに素早く印刷し、ガベージコレクトなしで
- 19. 複数の矢印をキャンバスに複数回クリックする方法
- 20. WPF印刷の問題
- 21. html5キャンバスの一部を印刷します
- 22. C#複数ページ印刷
- 23. Python 2.7.13複数行印刷
- 24. WPFアプリケーションからMigraDoc文書を印刷
- 25. 図の複数のプロット(R)を印刷
- 26. GridLineなしでWPFグリッドを印刷
- 27. firefoxは複数のページを印刷しますrowspan
- 28. nagiosで複数の行出力を印刷します
- 29. kableは複数行のスタルマジャーテーブルを印刷します
- 30. WPF WebBrowserの内容を印刷する
解決策の1つが問題を解決した場合は、解決済みとマークしてください。そうでない場合は、既存の回答にまだ見つからないものを明確にしてください。 – Iqon