0

我是WPF的新手,如果有问题请合作。在这里我需要专家的一些想法。

我正在开发一个应用程序,在填写表单上存在的字段后,我必须在 WPF 表单上显示一些内容。在同一个表单上,我还有一个打印选项。

检查此图像。这是我的表单,红色块中的部分是在运行时生成的。当我单击打印按钮时,它只显示纸上的可见部分并跳过剩余部分。

WPF 表单

问题: 当我点击打印时,如何将滚动到下一页的表单的剩余部分移动到下一页。

例如,在给定的图像中,我们只能看到 2 个完全的靶心和下一个 2 个部分。我如何才能将剩余的部分转移到下一页,只有当我点击打印时

4

2 回答 2

2

答案很简单:不要依赖你的窗口进行打印,而是构建你想要的视觉效果然后打印它。
例如,您必须有一个函数来动态创建圆圈等,然后将它们添加到面板中。您可能会做的是打印面板。
或者,如果您愿意,您可以动态构建一个新窗口,在其中放置您想要打印的所有数据,然后打印该窗口。这种方法的优点是内容更灵活(如果您想要页眉/页脚),并且您可以轻松查看内容以进行调试。请注意,即使 Window 内容是动态的,您也可以拥有一个用于打印的基本窗口,以避免您使用代码执行过多的 xaml(解释:您可能将 TextBox 绑定到您在 Print Window 的构造函数中设置的 PrintTitle 属性...)。
请注意,未在屏幕上呈现的视觉效果将不会打印。请确保,为了避免常见问题,从这个伟大的网站看这篇文章,打开代码,这里:
http ://www.switchonthecode.com/tutorials/printing-in-wpf

编辑(回复评论中的问题):
1)如果您有固定数量的牛眼,只需为该数字制作一个窗口并打印它,这更容易。
2) 要将视觉效果放在页面而不是行中,您必须依赖页面宽度/高度。重要的是控件的大小与页面的大小。在示例中,他们构建(在 OnRender 中)具有 LineHeight、LineWidth 作为大小的控件。做同样的事情:尝试放置尽可能多的控制线,例如(控制高度 + 边距)*NumberOfControlPerPage < 页面高度。
然后,您必须更改 OnRender 以呈现控件,而不是使用矩形 + 文本制作的行。在 Horizo​​ntal StackPanels 中将您的控件两个两个打包然后将这些 StackPanel 打包到垂直 StackPanel 中,然后进行渲染。您必须跟踪最后呈现控件的每个页面,然后在以下控件处恢复呈现。

于 2012-08-08T13:25:03.543 回答
0

请点击链接。这是我在网络世界中搜索后得到的基本信息。使用此基本详细信息,您可以在 WPF 中对打印进行任何操作

于 2012-08-09T11:51:27.363 回答