Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Как сделать увеличение


Автор: denmoroz 11.2.2006, 17:46
Как сделать увеличение битмапа (Как в компоненте ImageControls)? smile smile smile

Автор: s-mike 11.2.2006, 23:05
Посмотри код и http://forum.vingrad.ru/index.php?act=module&module=vingradfaq.

Автор: Snowy 12.2.2006, 01:19
TBitmap.StretchDraw

Автор: denmoroz 14.2.2006, 18:14
Заюзал код из FAQ:
Код

function ScalePercentBmp(bitmp: TBitmap;
 iPercent: LongInt): Boolean;
var 
 TmpBmp: TBitmap; 
 ARect: TRect; 
 h, w: Real; 
 hi, wi: Integer; 
begin 
 Result := False; 
 try 
   TmpBmp := TBitmap.Create; 
   try 
     h := bitmp.Height * (iPercent / 100); 
     w := bitmp.Width * (iPercent / 100); 
     hi := StrToInt(FormatFloat('#', h)) + bitmp.Height; 
     wi := StrToInt(FormatFloat('#', w)) + bitmp.Width; 
     TmpBmp.Width := wi; 
     TmpBmp.Height := hi; 
     ARect := Rect(0, 0, wi, hi); 
     TmpBmp.Canvas.StretchDraw(ARect, Bitmp); 
     bitmp.Assign(TmpBmp); 
   finally 
     TmpBmp.Free; 
   end; 
   Result := True; 
 except 
   Result := False; 
 end; 
end;


Но при уменьшении до начальныз размеров, картинка становится непонятной.

Как исправить?

Автор: Snowy 14.2.2006, 18:22
Дык чего ты ее дергаешь туда-сюда?
Храни исходный битмап и масштабируй из него.
Иначе обязательно столкнешься с потерями качества.

Автор: denmoroz 14.2.2006, 18:25
Snowy, А если в увеличенном битмапе юзер внесёт какие-небудь изменения? (Я пишу граф. редактор) smile

Автор: Snowy 14.2.2006, 18:56
Ты вноси изменения в оригинал и тут же перерисовывай в увеличенный вариант.
Нельзя постоянно масштабировать. Иначе в итоге каша получится.
Юзер нарисовал линию из точки А в точку Б - отрисуй такую же, по пропорциям в оригинал и снова отрисуй увеличенный оригинал.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)