I am almost exclusively using 8bit .png files with very limited palettes. This keeps the filesizes tiny and the style stylish... in an oldschool sort of way.
All transparency is handled through colorkeys. That is, a pixel that needs to be transparent in an image is colored with the colorkey color, full green (0,255,0). It's the least annoying fullbright color to look at, I think. There is no per-pixel alpha used!
The ImageSheet is a method I use for storing large numbers of related images that are the same size. So if my Terrain images are 128x64, I can make a sheet that contains four Terrain images on an image that is 512x64, then just give the base size while loading the ImageSheet.
The sub-unit of an ImageSheet, by the way, is called an "Entry" in the Image Sheet. Anything that stores a reference to the Entry in an ImageSheet stores the Entry as a number and the ImageSheet's name as a string. By doing this it is a simple matter to assign random Entries from ImageSheets, to assign Entries in linear succession (to make an Animation), or to assign Entries based on some set of rules (as in Terrain transition fringe).
Do note that an ImageSheet does not have to contain the images all side by side -- the ImageSheet maker automatically iterates through as much ImageSheet as needed, starting at the upper left, scrolling across to the right, then down to the next line, across, etc. like reading a book. So four tiles could be stored four across, two by two, or four down, they'll all be accessed by Entry numbers in the same manner.
An image sheet containing four different tiles of terrain in four entries:
As stated, an animation is contained in an Animation class which stores a reference to an ImageSheet as well as various other helpful variables, like the number of milliseconds per-frame to animation at. An Animation will be able to be inserted almost anywhere in the in-game graphics that any other image would be able to go.
An image sheet containing eight frames of animation:
A BorderStyle graphic is an image made with parts sized to particular ratios so that they can be cut up and tiled across the borders of GUI Panels. The ratios are as follows:
ButtonStyles are a collection of three BorderStyles, one for each button state: up, over, down. The components of ButtonStyles have a base name, eg. "green", then a suffix for the three states, appropriately "Up", "Over", and "Down".
A collection of BorderStyles which form a ButtonStyle:
A SliderStyle is a similarly organized graphic used to make a sliding scrollbar such as the one you probably see on the right side of your screen while reading this document. The dimension ratios of their components are pretty simple:
A font is a graphic made up of black (and only black) pixels on a colorkey (and only colorkey) background. The colors are necessary because palette shifting is used to render differently colored text. The characters are drawn on an 8x16 grid of squares of whatever size is desired. In the case of my example, the CharSize is 6x16 pixels, and this is appended to the name of the font, eg. "fontName6x16.png". The characters in the font must always be drawn in this order:
AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz1234567890!@#$%^&*()-_=+/\|[]{};:\'<>,.?`~ " ...(and so on with unimplemented characters, ahem.)
The standard dimensions of Terrain Tiles is 128x64. They are stored in ImageSheets, and I have been using sets of eight for no particular reason.
An sheet of four variations on dirt:
TerrainFringe is built from quarter-size (64x32) sub-tiles called Quads. They rows of four are organized as follows:
TerrainEffects are the same dimensions as Terrain tiles and as such as used for "flat" effects drawn on top of Terrain. These may include 'lone' effects like rocks, tufts of grass, or patches of dirt, or they may be neighbor-dependant like rivers and roads, or fully fringed like with TerrainFringe above, or even animated, like for waves in the ocean.
Four variations on brown rocks:
IsoFeatures are generally but not necessarily natural things drawn over TerrainEffects and Terrain which have greater height than a Terrain tile, including forests, hills, mountains, ... very large rocks... ...
This is a sheet of four variations on lone mountains:
I haven't implemented any entities yet, but they'll probably follow patterns similar to everything else. They may be implemented in a manner that allows them to act like TerrainEffects or IsoFeatures or something different, I haven't done it so I can't say for sure. Anyway, this is all the fun stuff: Cities, armies, farms, bridges, ships, explosions, smoke, factories, etc.
But if I did make entities, they might look like this (though in correct dimensions, not on 100x50 tiles, and without the terrain underneath):