2

单击“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");
        }
    }

该代码不包含任何错误,它根本无法按预期工作。

4

4 回答 4

3

默认情况下Save 方法以 png 格式保存(与bmp文件兼容,请参阅教程中的示例),尝试明确指定图像的格式:

Image screenshot = Clipboard.GetImage();
screenshot.Save("c:\\Users\\Default\\Pictures\\screenshot.jpg", ImageFormat.Jpeg);
于 2013-05-22T15:09:17.157 回答
2

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

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

如果要另存为JPG,则必须使用此重载

于 2013-05-22T15:08:46.060 回答
0

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

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

但是@Ilya Ivanov 也是正确的。

于 2013-05-22T15:14:15.643 回答
0

使用事件KeyUp代替KeyDownand 也ImageFormat可以以正确的方式保存图片。

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

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

于 2013-05-22T15:56:36.393 回答