Skins in FryGUI are admittedly pretty basic. Each of the gadgets that has a skin (buttons, panels, scroll bars, sliders, progress bars, check boxes, combo boxes, date panels and text fields, I believe) has their own individual look that must be loaded before use, and is used for every single instance of each of those gadgets.
Those images used are generally 15x15, and are broken up by the RefreshSkin() function when loaded into 9 component images (four corners, four sides, and the middle, all 5x5) so the gadget can be rendered at any size. Some are more fixed - scrollbars are fixed width, and a checkbox will always be the same size.
If you require a different look, you can create new images and set them, but you're very much limited by the 15x15 size. In truth, they just do the job rather than provide any real skinning functionality.
Image buttons, as you've noticed, only accept strings when created. Your modification is exactly the way I would do them if I was doing them now. The alternative is to pass a blank url and then use the SetImage() method. Images are the same.
And finally, you're right - the images expect handles to be at 0,0. That's an oversight on my part, so AutoMidHandles would definitely be a problem. You could either take into account the handles in the Render() method of the image button or image, or you could have them set the image handle when the gadget is created.
|