I've just begun to write a Raster class which provides some drawing methods onto BitmapData instances (pixel per pixel) :

Code example :

// create the BitmapData to work on
var pixels:Raster = new Raster(320, 240, true);

// draw stuff
pixels.drawRoundRect( new Rectangle ( 20, 20, 200, 100), 18, 0xFF00FFFF );
pixels.drawRect( new Rectangle ( 70, 70, 100, 100 ), 0xFF009900 );
pixels.filledTri( 40, 40, 80, 110, 50, 30, 0xFF998811 );
pixels.aaCircle(100, 100, 40, 0x77AA88 );
pixels.circle(40, 40, 30, 0xFF000000);
pixels.line(10, 10, 60, 80, 0xFF000000 );

// show it
addChild ( new Bitmap ( pixels ) );

Here's a simple demonstration

Open Source This project is OPEN SOURCE under RPL License.
2009-10-16 v1.4 raster_v1_4.zip
2007-01-07 v1.3 raster_v1_3.zip
2007-01-07 v1.2 raster_v1_2.zip
2007-01-07 v1.1 raster_v1_1.zip
2007-01-07 v1.0 raster_v1_0.zip

Raster

V1.4 API :
line()
triangle()
filledTri()
aaLine()
circle()
aaCircle()
quadBezier()
cubicBezier()
drawRect()
drawRoundRect()

This class use
rastering : Bresenham algorithm
anti-alias rendering : Xiaolin Wu algorithm

Authors (contribution) :
Didier Brun (original class)
Drew Cummins (bezier curves)
Thibault Imbert (performance optimizations, rectangles)