sollte es nicht auch einfach so gehen (zumindest beim vergrößern)
Code:
Result := TBitmap.Create;
try
Result.Width:=NewWidth;
Result.Height:=NewHeight;
Result.Canvas.Draw(0, 0, Icon);
Result.Canvas.StretchDraw(Rect(0, 0, Icon.Width, Icon.Height), Result);