Элементарно, Ватсон.
Тебе нужен буферный TBitmap (в котором "сидит" картинка) и TPaintBox, "полеженный" на TScrpllBox. Ну и некоторая переменная, регулирующая масштаб. Ну а при отрисовке содержимого ПэйнтБокса просто тупа пересчитываешь размеры картинки и выводишь ее через канву.
Код:
type
TForm1 = class(TForm)
ScrollBox1 : TScroolBox;
TPaintBox1 : TPaintBox;
...
private
K : Double;
Buf : TBitmap;
...
end;
procedure TForm1.PaintBox1Paint(Sender : TObject);
begin
PaintBox1.Width := Int(K*Buf.Width);
PaintBox1.Height := Int(K*Buf.Height);
PaintBox1.Canvas.StretchDraw(Rect(0,0,PaintBox1.Width,PaintBox1.Heignt),Buf);
end;