Here's some sample code of what I meant earlier. I haven't checked the code, and so I'm not entirely sure if its correct, but you'll hopefully get some ideas from it.

[pascal]
var
Form1: TForm1;
radarImg: TDirectDrawSurface;


implementation

{$R *.DFM}

procedure doRadarStuffHere()
begin
//do your radar drawing stuff in here like, i dunno draw pixels
//for every enemy you see or something like that
radarImg.Canvas.Pixels[30,20] := clyellow;
radarImg.Canvas.release;
end;

procedure TForm1.DXTimer1Timer(Sender: TObject; LagCount: Integer);
begin
DXDraw1.surface.fill(0);
doRadarStuffHere();
//instead of drawing the radarimg from the dximagelist, we draw the new
//radarimg, we just changed.
DXDraw1.Surface.Draw(10, 10, radarImg.ClientRect, radarImg, false);
DXDraw1.Flip;
end;

procedure TForm1.DXDraw1Initialize(Sender: TObject);
begin
//create new surface
radarImg:= TDirectDrawSurface.Create(DXDraw1.DDraw);
//and load the radarimage from the dximagelist
radarImg.LoadFromGraphic(dximagelist1.Items.Find['origionalRadarImg'].Picture.Graphic);
dxtimer1.Enabled:=true;
end;
[/pascal]

(Note, the drawing pixel part on the radar image is just a quick example, and isn't exactly fast.)

Hope this helps