This is a Windows Forms application for taking a snapshot of a web page. It has many uses (example: Alexa and Google search).
WebBrowser in code behind to load the page and then took a snapshot of it. The output image will be shown in a picture box in the main window.
Using the Code
There is just one class
WebPageCapture that handles everything. After filing the forms and clicking on save button, checking that the size property has been set properly, the output image format has been chosen and the path where to save the image will happen first and then the
webBrowser will navigate to the specified URL.
There are two different sizing mechanisms. The first one is to take a snapshot of the whole page, which is the default option, and that can be done by ticking the Full page check box. The second one is to set the size manually which can be done by unchecking the Full page check box option and typing the required size.
The most important part is using the
DrawToBitmap method which takes a
Bitmap object and
Rectangle object. However, most people ask why the output is an empty white image. The reason is that the page hasn't been loaded completely. So, I used
while (webB.ReadyState != WebBrowserReadyState.Complete)
WebBrowser_DocumentCompleted method will take the preferred size and set it to the size of the browser. Then, it will create the
Bitmap object and the
Rectangle object to pass it to the most important method
Bitmap bitmap = new Bitmap(weidth, height);
Rectangle bitmapRect = new Rectangle(0, 0, bitmap.Width, bitmap.Height);
System.Drawing.Image origImage = bitmap;
After that, a thumbnail of the output image will be created to be shown in the
pictureBox in the main window.
System.Drawing.Image origThumbnail = new Bitmap(400, 400, origImage.PixelFormat);
Graphics GraphicT = Graphics.FromImage(origThumbnail);
GraphicT.CompositingQuality = CompositingQuality.HighQuality;
GraphicT.SmoothingMode = SmoothingMode.HighQuality;
GraphicT.InterpolationMode = InterpolationMode.HighQualityBicubic;
Rectangle RectangleT = new Rectangle(0, 0, 400, 400);
pictureBox1.Image = null;
pictureBox1.SizeMode = PictureBoxSizeMode.CenterImage;
pictureBox1.BackgroundImage = origThumbnail;
The last part is to save the output image to the specified path taken from
Point of Interest