如何打印Form或FlowLayoutPanel以进行大于屏幕尺寸的打印?

时间:2012-12-18 09:51:25

标签: c# .net winforms printing flowlayoutpanel

我有一个Form,其主面板是一个FlowLayoutPanel,它正是我想要打印的内容(它看起来像一个格式很好的文档......没有按钮等等......你右键单击命令)

所以,我利用DrawToBitmap来实现几乎免费的打印......我只是调整Form的大小,使得主面板是用户想要打印的纸张大小(减去边距),这会导致它会自动为其大小自动流动其内容。然后我只使用DrawToBitmap将FlowLayoutPanel及其所有内容呈现给打印页面。我甚至可以通过增大窗口大于页面大小(相同的宽高比)来缩放以适应,然后缩小我从DrawToBitmap获得的位图。效果很好......

但它仅在您的屏幕大于页面大小时才有效!因为任何尝试调整大小超过屏幕大小的窗体或控件的任何尝试都会受到阻碍。

唉!!如果你要通过拒绝调整大于屏幕的大小来杀死它的适用性,为什么要用DrawToBitmap的简单性和实用性来取笑我呢? (修辞)

我的问题:

有没有办法绕过这个限制并让Form或FlowLayoutPanel调整大小比屏幕大?

如果没有,有没有办法到达FlowLayoutPanel的滚动表面(不只是滚动到视图中的部分),这样我可以调整它以匹配打印的页面,这样我可以调用它上面的DrawToBitmap?

如果没有,是否还有其他方法可以利用我现有的布局功能进行打印?或者我基本上重写所有WinForms代码只是为了生成相同的Bitmap,如果我的屏幕比我的打印页面大,它会产生吗?

1 个答案:

答案 0 :(得分:0)

我不确定,但是可以虚拟地做到这一点。 IE:

Dim FLP as FlowLayoutPanel = Form1.FlowLayoutPanel1
For Each flp_subobject as Object in FlowLayoutPanel.Children
    FLP.Children.Add(flp_subobject)
Next
FLP.Height = MASSIVEHEIGHT
FLP.Width = MASSIVEWIDTH
DrawToBitmapFunction(FLP)

我就是这样做的,而不是我在超出屏幕限制等方面有很多经验。让我知道这是怎么回事,因为它几乎就是当场直接出现的:D