将Panel保存为JPEG,仅保存可见区域c#

Kar*_*arl 4 c# printing jpeg

我正在尝试保存,然后在c#中打印一个面板.我唯一的问题是它只保存可见区域,当我向下滚动时它打印出来.

 Bitmap bmp = new Bitmap(this.panel.Width, this.panel.Height);

 this.panel.DrawToBitmap(bmp, new Rectangle(0, 0, this.panel.Width, this.panel.Height));

 bmp.Save("c:\\panel.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
Run Code Online (Sandbox Code Playgroud)

Ste*_*cya 10

试试以下

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

    public void SaveBitmap()
    {
        Bitmap bmp = new Bitmap(this.panel1.Width, this.panel.Height);

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

        bmp.Save("d:\\panel.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
    }
Run Code Online (Sandbox Code Playgroud)

这是我的结果:

表格ScreenShot:

在此输入图像描述

保存的位图:

在此输入图像描述

正如您所看到的那样,TextBox在表单上不可见但存在于保存的位图中