By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
428,681 Members | 1,775 Online
Bytes IT Community
Submit an Article
Got Smarts?
Share your bits of IT knowledge by writing an article on Bytes.

Capture Screen (The Express Way in 5 Lines)

Atran
100+
P: 319
Hello Everyone.
In this article: You will know to capture the screen in 2 ways:
1)- Capture full screen.
2)- Capture region.

Let's Begin:
First make a new Windows Application project.
And make sure your program uses these namespaces:
Expand|Select|Wrap|Line Numbers
  1. using System;
  2. using System.Drawing;
  3. using System.Drawing.Imaging;
  4. using System.Windows.Forms;
  5.  
Now, we will begin writing the code:
1)- Create a new bitmap object.
Expand|Select|Wrap|Line Numbers
  1. //Bitmap screenBitmap = new Bitmap(int width, int height, PixelFormat);
  2. Bitmap screenBitmap = new Bitmap(1024, 768, PixelFormat.Format32bppArgb);
  3.  
2)- Create a new rectangle object.
Expand|Select|Wrap|Line Numbers
  1. //screenRegion will grab the size of your current screen.
  2. Rectangle screenRegion = Screen.AllScreens[0].Bounds;
  3.  
3)- Create a new graphics object.
Expand|Select|Wrap|Line Numbers
  1. Graphics screenGraphics = Graphics.FromImage(screenBitmap);
  2.  
4)- Copy the image from the screen.
Expand|Select|Wrap|Line Numbers
  1. //screenGraphics will copy the image from the screen.
  2. screenGraphics.CopyFromScreen(screenRegion.Left, screenRegion.Top, 0, 0, screenRegion.Size);
  3.  
5)- Save the image:
Expand|Select|Wrap|Line Numbers
  1. screenBitmap.Save(@"C:\Screen.jpg", ImageFormat.Jpeg);
  2.  
Here is the code:
Expand|Select|Wrap|Line Numbers
  1. Bitmap screenBitmap = new Bitmap(1024, 768, PixelFormat.Format32bppArgb);
  2. Rectangle screenRegion = Screen.AllScreens[0].Bounds;
  3.  
  4. // It will copy the current screep image to the bitmap image.
  5. Graphics screenGraphics = Graphics.FromImage(screenBitmap);
  6. screenGraphics.CopyFromScreen(screenRegion.Left, screenRegion.Top, 0, 0, screenRegion.Size); 
  7.  
  8. screenBitmap.Save(@"c:\test.jpg", ImageFormat.Jpeg);
  9.  

You can also capture a part of the screen (region):
Expand|Select|Wrap|Line Numbers
  1. /* The Code was:
  2.    screenGraphics.CopyFromScreen(screenRegion.Left, screenRegion.Top, 0, 0, screenRegion.Size); 
  3. */
  4.  
  5. //See the difference.
  6.  
  7. //screenGraphics.CopyFromScreen(intSourceX, intSourceY......);
  8. screenGraphics.CopyFromScreen(200, 300, 0, 0, screenRegion.Size);
  9.  
Hope this help you.
Jun 21 '07 #1
Share this Article
Share on Google+
5 Comments


P: 99
Hey Atran

Thanks!

Its nice stuff with good and simple explanation
Jul 5 '07 #2

Atran
100+
P: 319
Hey Atran

Thanks!

Its nice stuff with good and simple explanation
You're welcome, enjoy.......
Jul 5 '07 #3

P: 12
Great tip
this is something that I can use daily with a few modifications.
I do not use C# though so I thought that you would not mind if I posted the VB code
Expand|Select|Wrap|Line Numbers
  1. Imports System
  2. Imports System.drawing
  3. Imports System.Drawing.Imaging
  4. Imports System.Windows.Forms
  5.         Dim screenBitmap As New Bitmap(1024, 768, PixelFormat.Format32bppArgb)
  6.         Dim screenRegion As Rectangle = Screen.AllScreens(0).Bounds
  7.  
  8.         ' It will copy the current screep image to the bitmap image.
  9.         Dim screenGraphics As Graphics = Graphics.FromImage(screenBitmap)
  10.         screenGraphics.CopyFromScreen(screenRegion.Left, screenRegion.Top, 0, 0, screenRegion.Size)
  11.  
  12.         screenBitmap.Save("c:\test.jpg", ImageFormat.Jpeg)
Jul 27 '07 #4

P: 1
PKV
this was really good one!!
Thanx
Jul 31 '07 #5

P: 14
Hi ,
The above code is working gr8 in development machine.Once i deploy it in the server its giving 'Handle Invalid' error.
Any suggestion
Mar 14 '11 #6