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



现在我有一个按钮,将自动保存我当前窗口的屏幕截图使用位图,并将其保存在指定的文件夹。下面是我使用的代码

    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);
    }

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

当然!我是这样做的:

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

最新更新