现在我有一个按钮,它会使用Bitmap自动保存当前窗口的屏幕截图并将其保存在指定的文件夹中。这是我使用
的代码 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.panel1.Height);
this.panel1.DrawToBitmap(bmp, new Rectangle(0, 0, this.panel1.Width, this.panel1.Height));
foreach (Control control in panel1.Controls)
{
DrawControl(control, bmp);
}
bmp.Save("C:\\Users\\R***\\Desktop\\panel.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);
}
现在我想要的是我能够指定我想要保存位图的位置。而不是代码中的特定文件夹。这可能吗?
答案 0 :(得分:3)
当然!我就是这样做的:
private void SaveImage(Bitmap bmp)
{
SaveFileDialog saveDlog = new SaveFileDialog();
saveDlog.InitialDirectory = @"C:\";
saveDlog.FileName = "screenshot.png";
saveDlog.Title = "Save Screenshot";
saveDlog.Filter = "PNG File | *.png";
ImageFormat format = ImageFormat.Png;
if (saveDlog.ShowDialog() == DialogResult.OK)
{
bmp.Save(saveDlog.FileName);
}
}
调用SaveImage(bmp)
而不是bmp.Save()
,您将看到标准的保存对话框。你可以决定你想要的默认类型(在这种情况下放jpg而不是png),你可以将初始目录更改为你想要的目录。