开发上位机过程中,收到需求:在软件跑完数据之后保存报告和图表截图。因为界面控件都做了大小拉伸缩放的适配,所以简单的设置截图起始点和长宽时无法满足需求的。所以要做一个根据控件本身大小来做截取动作的功能,所以我写了一个截取指定控件内图像的函数。
函数如下,只需传入控件,和存储图像的地址。即可将指定控件内的图像截取并保存到指定路径,这里的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);
}