C# print screen active window

后端 未结 1 799
小蘑菇
小蘑菇 2021-01-15 02:04

I am currently trying to print screen an active window using Visual C#. I have this code:

SaveFileDialog saveImageDialog = new SaveFileDialog();
saveImageDia         


        
相关标签:
1条回答
  • 2021-01-15 02:30

    The simplest way will be to switch the code:

    // Set the bitmap object to the size of the screen
    bmpScreenshot = new Bitmap(this.Bounds.Width, this.Bounds.Height,
                               PixelFormat.Format32bppArgb);
    // Create a graphics object from the bitmap
    gfxScreenshot = Graphics.FromImage(bmpScreenshot);
    // Take the screenshot from the upper left corner to the right bottom corner
    gfxScreenshot.CopyFromScreen(this.Bounds.X, this.Bounds.Y, 0, 0,
                                 this.Bounds.Size, CopyPixelOperation.SourceCopy);
    
    SaveFileDialog saveImageDialog = new SaveFileDialog();
    saveImageDialog.Title = "Select output file:";
    saveImageDialog.Filter = "JPeg Image|*.jpg|Bitmap Image|*.bmp|Gif Image|*.gif";
    //saveImageDialog.FileName = printFileName;
    if (saveImageDialog.ShowDialog() == DialogResult.OK)
    {
        // Save the screenshot to the specified path that the user has chosen
        bmpScreenshot.Save(saveImageDialog.FileName, ImageFormat.Png);
    }
    

    First create the screenshot and than show the save dialog and save it to the disc if the dialog was closed with OK.

    The problem is, that in your code, the program has no time to repaint your form. If you want to retain the structure of your code, you would need to give it some time to process the pending events, possibly by calling Application.DoEvents.

    0 讨论(0)
提交回复
热议问题