Показать сообщение отдельно
  #2  
Старый 03.03.2009, 18:27
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,088
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

Элементарно, Ватсон.
Тебе нужен буферный 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;
Ответить с цитированием