Introduction
Once upon a time, I got an idea to have a thumbnail of a webpage associated with each URL that I had on my list. Sort of a URL with "face" :). I began to research on how to implement it, and found no solution for it in the open software domain. Many that I found were commercial products in the form of components and standalone programs. I'm just a poor programmer, and couldn't spend much to buy such a component. I was sure that there would be a way (even several) to achieve this goal without touching my child's spare money. And what I present in this article is what I found.
Using the code
Before you get into the code, you can build it and play around with it. The URL should be in a form http://www.yoursite.com, for example. I didn't write URL validation code, so you have to be careful about it. The project is very simple, and there are only a couple of points that I have to mention. To get the thumbnail image of the webpage, I use the WebBrowser
component that comes with Visual Studio 2005 and is a part of the .NET framework v.2. I placed it on a BrowserForm
, and set the size of the form to approximately 600 to 800 pixels to get enough visual data. Then, the BrowserForm
is initialized, but is actually never shown. And this makes a trick.
private void TestForm_Load(object sender, EventArgs e) {
browserForm = new BrowserForm();
}
What I have to do then is to take a snapshot of the WebBrowser
after the page is loaded. That's all!
Bitmap docImage = new Bitmap(600, 800);
webBrowser1.DrawToBitmap(docImage, new Rectangle(webBrowser1.Location.X,
webBrowser1.Location.Y, webBrowser1.Width, webBrowser1.Height));
}
The page takes some time to load, and because of that, I've split the getting of the image in to three steps:
- I call the method
getImageFromUrl(string url)
on a BrowserForm
that starts downloading the page from a given URL.
- The
WebBrowser
event DocumentCompleted
is handled by the procedure webBrowser1_DocumentCompleted
. It sets the image of the current DocPic
object.
- The setter of the current
DocPic
object triggers the refreshPicture
event that updates the displayed picture. Some resizing is made on place.
All code provided is purely for demonstration purposes only, so don't try to find design issues in it. You'll certainly find it if you try.
History
It's nice to know that on your website I can write history :). Thanks to the admin!