http://gethelp.devx.com/techtips/del.../10min1099.asp

That uses Canvas.Pixels, which is very slow and sucks. You'd want to load the picture up in a TBitmap and scan through it using Scanline, which will be approximately a zillion times faster. Also, you could change the bit that says "SetWindowRgn(TForm(Owner).Handle, Region, True);" to use TWinControl(Owner).Handle, which means it could be used to skin other win32 controls (which will have a handle - no non-TWinControls, however...).

If you install that and dump it Align=alClient on the form, you can skin it. With the above suggestions, you should have a generic skinable app. You probably only want to use a two-colour bitmap (black/white) to store the skin.