将屏幕截图保存到c#中的特定位置

时间:2014-05-30 17:57:39

标签: c# visual-studio-2010

现在我有一个按钮,它会使用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);
    }

现在我想要的是我能够指定我想要保存位图的位置。而不是代码中的特定文件夹。这可能吗?

1 个答案:

答案 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),你可以将初始目录更改为你想要的目录。