按PrintScreen后创建图像文件

本文关键字:图像 文件 创建 PrintScreen | 更新日期: 2023-09-27 18:15:04

我想在点击"printscreen"后自动保存图像到文件,但我不知道我做错了什么。

    private void Form1_KeyDown(object sender, KeyEventArgs e)
    {
        if (e.KeyCode == Keys.PrintScreen)
        {
            Image screenshot = Clipboard.GetImage();
            screenshot.Save("c:''Users''Default''Pictures''screenshot.jpg");
        }
    }

代码没有包含任何错误,只是没有按预期工作。

按PrintScreen后创建图像文件

默认保存为png格式(与bmp文件兼容,参见教程中的示例),尝试明确指定图像的格式:

Image screenshot = Clipboard.GetImage();
screenshot.Save("c:''Users''Default''Pictures''screenshot.jpg", ImageFormat.Jpeg);

默认使用png编码器,而不是jpg

http://msdn.microsoft.com/en-US/library/vstudio/ktx83wah.aspx

如果你想保存为JPG,你必须使用这个重载

当然,您可以随时更改ImageFormat并从任何源复制到剪贴板之前。

item.SheetObject.CopyBitmapToClipboard();
Image img;
img = Clipboard.GetImage();
img.Save(temporaryFilePath + ".bmp", ImageFormat.Bmp);

但是@Ilya Ivanov也是正确的

使用事件KeyUp代替KeyDownImageFormat以正确的方式保存图片。

private void Form1_KeyUp(object sender, KeyEventArgs e)
{
    if (e.KeyCode == Keys.PrintScreen)
    {
        Image screenshot = Clipboard.GetImage();
        screenshot.Save("c:''_temp''screenshot.jpg", ImageFormat.Jpeg);
    }
}

代码对我来说没有问题,当然-与保存的图片。