Okay, I'll try to write this down... AGAIN...

Wrong drawing code:
Code:
DXDraw.Surface.Draw(0,100,Rect(0,0,Surface.Width,Surface.Height),Surface);
Right drawing code:
Code:
DXDraw.Surface.Draw(0,100,Rect(0,0,Surface.Width,Surface.Height),Surface,False);
Logically right drawing code:
Code:
DXDraw.Surface.Draw(0,100,Surface, False);
And as I've said before... In hardware mode, a SURFACE's transparent colour will be the top-left pixel's colour. You have a 1 colour surface, so the top-left pixel's colour is the same as all of the image. Thus it's totally transparent. With the upper drawing procedures it won't draw with transparency.

For the upper geometry, you need to know the points of the rectangle, and the point(s) of the object(s) you wish to see if they're intersecting the rectangle. The rectangle's points - you rotate those too.