开发上位机过程中,收到需求:在软件跑完数据之后保存报告和图表截图。因为界面控件都做了大小拉伸缩放的适配,所以简单的设置截图起始点和长宽时无法满足需求的。所以要做一个根据控件本身大小来做截取动作的功能,所以我写了一个截取指定控件内图像的函数。

  函数如下,只需传入控件,和存储图像的地址。即可将指定控件内的图像截取并保存到指定路径,这里的control我一般传入一个容器控件(控件中可能包含表格、图表、标签之类的内容)。

 public void CaptureControl(Control control, string addrName)
        {
            // 获取控件的位置和尺寸
            Rectangle bounds = control.Bounds;

            // 创建一个位图对象
            Bitmap bitmap = new Bitmap(bounds.Width, bounds.Height);

            // 将控件绘制到位图上
            control.DrawToBitmap(bitmap, new Rectangle(0, 0, bounds.Width, bounds.Height));

            //按指定名称存储到路径下
            bitmap.Save(addrName, System.Drawing.Imaging.ImageFormat.Bmp);
        }