Oct 20, 2010
I am running a website for a F1 racing game, where users can submit their laptimes and compete with each other for the fastest time.
View 3 Replies
I am now trying to have my website create an image of the top-5 users every... 5 minutes or something, and copy it to the webserver somewhere I can link to. This way the image under that link will update with the latest information every 5 minutes.
To layout the times (these also include the position (1 to 5), the username, the platform, the time of course, and some more details) I am using a DataGridView. I could take the long route and layout the specific 'columns' manually, but I thought using a grid was far easier. I simply set some properties of the grid to make it look nothing like a grid (basically hide the column and row headers and grid lines and give everything the same backcolor). Then I load the times into the grid, and take an image of it using the Control.DrawToBitmap method.
This works fine, but it returns the entire grid. This is a problem because I made the grid extremely large (5000x5000) so that it can always accommodate the times regardless of the length of the usernames. So, the image I get is 5000 pixels wide while it only contains data in the first 500 px orso.
I am currently using the GetRowDisplayRectangle and GetColumnDisplayRectangle methods to figure out the part of the grid that actually displays the times, and use that to cut the image down to the portion I need.
But here's a problem: these methods only return something when the grid is on a form that is currently being shown! I am already giving the grid a parent form (even though I am just creating it in memory and it doesn't need to be displayed anywhere) because otherwise the data wouldn't load, but I was never showing that form. Now it turns out I do need to show the form, very briefly, in order to figure out the area that I need to take a snapshot from.
Remember that this is all happening on a webserver, so I'm not absolutely sure if this is a problem. Is it ok for a webserver to have a form popping up and down every 5 minutes? Or will this cause problems? I honestly don't know but I don't think it's a good thing. Moreover, it also pops up on my own machine when I'm testing, and it's damn annoying.
So my question is basically twofold:
1. Maybe I should ask this in the ASP.NET forum, but is it a problem to show a form briefly every 5 minutes?
2. Is there any other way to get these Get...DisplayRectangle methods to work without having the grid on a physically visible form?