I'm using Borland C++ Builder. I went ahead last night and coded up some gauges & the structures needed to give me some basic skin functionality. I didn't add in the socket connection, but that's pretty easy for me. I've done some socket server/clients with Borland and have other projects I can rip my code out of and port over. For now, I just needed some "pretty" on the screen as I was tired of looking at my crappy guages I've been using while testing the firmware.
Here's some pics/details of the quick gauges I came up with last night.
A Grey/Silver one
A Gold Skin
A Tan one
I did a red and a blue as well. The red looked quite evil (which was the point) but I didn't have tick mark color changeable at that time so they were a bit hard to read. I want to do a nice vintage 1900's looking one as well.
I first used photoshop to create the image of the dial that I can play with face gradients & bezels. Then I save out the skin (just the dial face with NO number/tickmarks, nothing other than the blank face & bezel) as a .bmp. HellTune then uses the single skin.bmp for all the gauges drawn. Big, small, medium, all the gauges sizes use the same base bitmap, and then I draw whichever sensor ID I want on the face using a gauge definition. The definition defines the number of ticks, min,max, needle color, highlight colors, ect.
This widget needs more attention & I have to add more gauge definitions but it works well now and is fun to see work on the bench with the HellFire ECU sending me live data.
Note: By exposing the definition in the form of a simple text file which the user can select, the virtual dash does in fact become somewhat skinnable, although it might be a bit cumbersome & not "WYSIWYG". They can of course select different background .bmps as well as well as a frameless form bitmap. What I really want it to code up a nice object styled editor where the user can click on a gunge, set the parameters on the fly, drag it around the screen, ect. It's not that hard, but I have other portions of the code that I need to finish up as well as firmware before my product release, so the full skinner will have to wait.