打印控件

Jon*_*Nos 3 c# printing controls

我想知道是否有一种简单的方法可以将C#中的任何控件打印到打印机.我的具体示例是尝试将TableLayoutPanel打印到收据(因此我不必担心分页符或任何内容),但我希望能够打印出发送给我的任何可见对象.现在我必须创建一个位图,然后做一个TableLayoutPanel.DrawToBitmap,但这似乎非常低效,因为我已经有了打印的Graphics对象,应该有一个简单的方法来做这个..谢谢!

编辑:我注意到有一个"ControlPaint.Draw__",但是它没有很多可以绘制的控件(它有Border,Button,CheckBox,ComboBox).

Sim*_*Var 6

private static void PrintControl(Control control)
{
    var bitmap = new Bitmap(control.Width, control.Height);

    control.DrawToBitmap(bitmap, new Rectangle(0, 0, control.Width, control.Height));

    var pd = new PrintDocument();

    pd.PrintPage += (s, e) => e.Graphics.DrawImage(bitmap, 100, 100);
    pd.Print();
}
Run Code Online (Sandbox Code Playgroud)

它仍然使用DrawToBitmap,但它是最优雅的你会得到.

它非常简洁,可读且效率低,所以我认为没有理由不喜欢它.