Sorry for the late reply, to be honest I kinda forgot about it until last night!

I did look it up for you tho, but it's a WEIRD system and in my opinion it doesn't work as it should, it rotates, but it also translates while rotating, which sucks!

To rotate an image in the ImageList 90 degrees, use this:

[pascal]DXImageList1.Items[0].DrawRotate(DXDraw1.Surface, 0, 0, DXImageList1.Items[0].Width, DXImageList1.Items[0].Height, 0, 0.5, 0.5, 64);[/pascal]

And yes I know you I put 64 there instead of 90, but believe me it rotates 90 degrees.

It's quite easy to use, this is the procedure:

[pascal]DrawRotate( Surface, X , Y, Width, Height, PatternIndex, CenterX, CenterY, Angle);[/pascal]

Well the Surface, X, Y, Width, Height and PatternIndex parameters present nothing new, you can read all about them in the tutorial above. However the CenterX, CenterY and Angle parameters are new.

The CenterX and CenterY parameters are of the type double, and don't represent pixel coordinates, but more or less abstract values for the "pivot" the image is going to rotate on. The right/bottom side of the image is represented with the value 1.0 and the left/top side is represented by the value 0, the center of the image is also ( 0.5, 0.5 ), when we rotate the image normally we will most likely use the center of the image. Then we get to the angle, which is a rather unique value and I have no clue what system is used, the maximum rotation angle is 256 (= 360 degrees) and the minimum angle is 0 (= 0 degrees). To convert an angle in degrees you can use the following formula:

DelphiXAngle = ( 256 / 360 ) * DegreeAngle.
( 256 / 360 ) * 90 = 64, hence the 64 I used in the above example.

That should do what you want it to do, however the downside of this supplied method is that it also translates the image, which it shouldn't do, ESPECIALLY not when I provide it with a pivot in the centre of the image.

Here's a procedure that draws graphics to the screen using DelphiX drawrotate method without using the ImageList. It also copes with the translation that occurs when rotating images, if you want to use the ImageList object it should be fairly easy to adapt:

[pascal]Procedure DrawImageRotated(X, Y : Integer; DDS : TDirectDrawSurface; Transparent : Boolean; Angle : Integer);
var SourceRect : TRect;
DXAngle : Integer;
Begin
SourceRect := Rect(0, 0, DDS.Width, DDS.Height);
DXAngle := ( 256 div 360 ) * Angle;
Form1.DXDraw1.Surface.DrawRotate(X + (DDS.Width div 2), Y + (DDS.Height div 2), DDS.Width, DDS.Height, SourceRect, DDS, 0.5, 0.5, Transparent, DXAngle);
End;[/pascal]

To read more about the rotation methods of DelphiX, I would refer you to this website:

http://www.cerebral-bicycle.co.uk/viewdoc.asp?doc=37(at the bottom there is a lot of info on rotation)

I hope this helps!