如何在Windows窗体C#中打印可滚动面板

时间:2018-02-09 11:51:06

标签: c# winforms screenshot

我有自定义控件,其中有一个可滚动面板,整个内容在屏幕上不可见。(需要滚动查看所有内容)

用户想要精确打印面板在屏幕上的外观,但是用户想要整个面板,而不需要滚动就可以在屏幕上看到。

如何在多个页面中捕获和打印整个面板?

感谢任何帮助。

1 个答案:

答案 0 :(得分:-1)

这可能会对你有所帮助。

    pnlReport.AutoScrollPosition = new Point(0, 0);

    public void DrawControl(Control control, Bitmap bitmap)
    {
        control.DrawToBitmap(bitmap, control.Bounds);
        foreach (Control childControl in control.Controls)
        {
            DrawControl(childControl, bitmap);
        }
    }


    public void SaveBitmap(string filename)
    {
        var size = myControl.PreferredSize;
        var height = size.Height;
        Bitmap bmp = new Bitmap(this.myControl.Width, height);

        this.myControl.DrawToBitmap(bmp, new Rectangle(0, 0, this.myControl.Width, height));
        foreach (Control control in myControl.Controls)
        {
            DrawControl(control, bmp);
        }

        bmp.Save(filename, ImageFormat.Jpeg);
        bmp.Dispose();
    }