AniSprite is a multiple layer sprite animation library for Microsoft Windows (3.1x, Windows 3.1x with Win32s, Windows 95/98/ME and Windows NT/2000/XP). It is aimed at games and multi-media programmers, but there are also graphical design and business applications that use AniSprite (e.g. to implement image "layers").
- alpha blending between sprites and the background image (even in 256 colour modes), which enables anti-aliased edges, translucent sprites and sprite fading
- shadows and flare effects, in any colour
- multiple animation areas
- full support for animation in 256 colours (including alpha and luma blending), in any (optimized) palette; AniSprite also supports 24-bpp RGB animations
- callbacks ("events") for custom painting (draw on the sprite with GDI calls), or automatic collision detection
- unlimited number of sprites
- flexible support for DirectDraw (in windowed or exclusive modes), but also runs without DirectDraw (in a window)
- supports DIB sections on Windows 95/98/ME and Windows NT/2000/XP
- both low-level and medium-level interfaces: direct access to the bitmap data of sprites, masks and the animation frame, but also animation along linear or curved paths on a high-precision timer
- optionally synchronizes with the vertical retrace of the monitor, even when not running under DirectDraw
- transparent boards, move sprites over a dynamically updated application
- screen grab, system palette grab
- callbacks ("events") for custom painting or -automatic- collision detection
- high performance, optimized "dirty rectangle" calculation with minimum overwrite, critical routines in hand-optimized assembler
- 16-bit and 32-bit implementations; runs in Microsoft Windows 3.1, Microsoft Windows 95/98/ME and Windows NT/2000/XP.
- sprites can be linked, moving the master also moves the linked ones; even a circular list of linked sprites is handled
- each sprite has an origin (which may lie outside the sprite)
- many "utility" functions to crop sprites to the smallest bounding box, to create, convert or modify masks, to adjust images to a specific palette, to resize a DIB or its mask, to create a mask from a colour key (chroma keying), etc.
- high resolution timer
- Windows DLL interface, libraries/definition files for C/C++ and Visual Basic
- flexible design, integrates with EGI (frame animation engine) and other graphic libraries
- dynamic sprites (support for callback functions per sprite)
- comes with APIguard, a utility to help a developer catch parameter errors and "leaks". APIguard is included in the retail version only.
- source code for the complete sprite library is available
- Download AniSprite version 3.1 evaluation version (1,568 kBytes)
Note: The retail version of AniSprite is version 3.2; the downloadable evaluation version is version 3.1.
Technical information (advanced or unconventional usage of the AniSprite library) is available online as well. See, for example:
- Using transparent boards with AniSprite
- One of the new features of AniSprite 2.0 is the support for transparent boards. With a transparent board, you can draw your board with all sprites over a background that was created by other means. It allows you, for example, to move 256-colour sprites on top of an RGB background image.
- Collision detection in AniSprite
AniSprite 3.0 supports a flexible (and quick) model for collision
detection. This paper takes it to task using a simple "billiard"
animation as a vehicle.
If you are interested in the kinetics of colliding balls in a two dimensional space, you are invited to this paper as well. (And, by the way, extension to 3D is trivial. This paper does not cover that, because AniSprite is 2D only.)
- AniSprite tips
- This page contains several tips that exploit specific AniSprite features or tricks that show some creative use of the AniSprite toolkit. What you will find here is a hodgepodge of mostly unrelated snippets, explained in an informal style, for example: splitting a sprite and its shadow mask into two different sprites, using luma masks to simulate alpha blending, group operations, and storing pictures in resource data of a Windows program.