sure you can, take a look at the game Catapults I made especially at ColorizeImage.

[pascal]procedure ColorizeImage(var srcImage, destImage: PSDL_Surface;
srcRect, maskRect: TSDL_Rect; Color: UInt32);
var
ObjectOverLayColour, TempImage : PSDL_Surface;
begin
{the remark area is unnecessary IF you select you image carefully}
// Create a surface to hold the negative colour to be subtracted.
ObjectOverLayColour := SDL_CreateRGBSurface( SDL_SWSURFACE, destImage.w, destImage.h,
Screen.format.BitsPerPixel, Screen.format.RMask, Screen.format.GMask,
Screen.format.BMask, Screen.format.AMask );
// Create a temporary working surface.
TempImage := SDL_CreateRGBSurface( SDL_SWSURFACE, destImage.w, destImage.h,
Screen.format.BitsPerPixel, Screen.format.RMask, Screen.format.GMask,
Screen.format.BMask, Screen.format.AMask );
// Make sure that the temp image uses pink as the transparent colour
// SDL_SetColorKey( TempImage, SDL_SRCCOLORKEY or SDL_RLEACCEL or SDL_HWACCEL,
// 0{SDL_MapRGB( ObjectOverLayColour.format, 255, 0, 255 )} );

// Copy the sprite image to our work area
SDL_BlitSurface( srcImage, @srcRect, TempImage, nil);
// SDL_SaveBMP(TempImage, '1.bmp');

// Fill the Colour surface with the appropritate colour
SDL_FillRect( ObjectOverLayColour , nil, Color);
// SDL_SaveBMP(ObjectOverLayColour, '2.bmp');
// Subtract the colour from the work surface
SDL_SubSurface( ObjectOverLayColour, nil, TempImage, nil );
// SDL_SaveBMP(TempImage, '3.bmp');
// Blit our Mask onto the work area. This gets around the colour problem
// SDL_BlitSurface( srcImage, @maskRect, TempImage, nil);

// Make sure that the Image uses pink as the transparent colour
// SDL_SetColorKey( destImage, SDL_SRCCOLORKEY or SDL_RLEACCEL or SDL_HWACCEL,
// SDL_MapRGB( destImage.format, 255, 0, 255 ) );
// Blit the work surface to the Image
// SDL_SetColorKey( TempImage, SDL_SRCCOLORKEY or SDL_RLEACCEL or SDL_HWACCEL,
// 0 );
SDL_BlitSurface( TempImage, nil, destImage, nil );
// SDL_BlitSurface( srcImage, @maskRect, destImage, nil);
SDL_SetColorKey( destImage, SDL_SRCCOLORKEY or SDL_RLEACCEL or SDL_HWACCEL, 0 );

SDL_FreeSurface( TempImage );
SDL_FreeSurface( ObjectOverLayColour );
end;[/pascal]

I see I have a lot of comments in there... you’ll have to play around with it, it should work as it is.