Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2009.12.13;
Скачать: CL | DM;

Вниз

Как масштабировать изображение по размерам окна?   Найти похожие ветки 

 
ILPU ©   (2008-05-02 14:44) [0]

Как масштабировать изображение по размерам окна?
Я использую из koljanfx Strecth.
procedure MyStrecth;
var
NewWidth,
NewHeight: Integer;
begin
if SrcBitmap.Empty then Exit;
if SrcBitmap.Width > SrcBitmap.Height then
begin
NewWidth := Panel1.Width;
NewHeight := Round(Panel1.Height * SrcBitmap.Height / SrcBitmap.Width);
end
else
begin
NewHeight := Panel1.Height;
NewWidth := Round(Panel1.Width * SrcBitmap.Width / SrcBitmap.Height);
end;

DesBitmap.Width:=NewWidth;
DesBitmap.Height:=NewHeight;
Strecth(SrcBitmap,DesBitmap,BellFilter,1.5);
end;
procedure TForm1.Panel1Paint(Sender: PControl; DC: HDC);
begin
DesBitmap.Draw(DC,0,0);
end;
procedure TForm1.KOLForm1Resize(Sender: PObj);
begin
Strecth;
end;
Возникает тормазнутось когда меняешь размеры окна
Проблема в  KOLForm1Resize.
Как быть?


 
Compiler ©   (2008-05-02 22:51) [1]

> Проблема в  KOLForm1Resize.

Никаких проблем

var
 BMP:PBitmap;
procedure TForm1.KOLFormFormCreate(Sender: PObj);
begin
BMP:=NewBitmap(0,0);
BMP.LoadFromFile("Bunny.bmp");
PaintBox1.Transparent:=True;
...

procedure TForm1.PaintBox1Paint(Sender: PControl; DC: HDC);
begin
 if (Assigned(bmp) and (not bmp.Empty)) then
    BMP.StretchDraw(form1.form.canvas.Handle,MakeRect(0,0,Paintbox1.Width,Paintbox1. Height));
end;



 
ILPU ©   (2008-05-03 05:51) [2]

Когда большие фотки, качество страдает!


 
ILPU ©   (2008-05-03 06:07) [3]

Если так то качество нормальное, но опять тормазнутость:
procedure MyStrech(DC:HDC);
var B: PBitmap;
begin
 B:=NewBitmap(Paintbox1.Width,Paintbox1.Height);
 Strecth(SrcBitmap,B,ResampleFilters[5].Filter,ResampleFilters[5].Width);
 DesBitmap.Assign(B);
 B.Free;
 DesBitmap.Draw(DC,0,0);
end;
procedure TForm1.PaintBox1Paint(Sender: PControl; DC: HDC);
begin
if (Assigned(DesBitmap) and (not DesBitmap.Empty)) then
MyStrech(DC);
end;


 
ILPU ©   (2008-05-03 08:19) [4]

В книге по KOL вычитал используем SetStretchBltMode(DC,halftone);
И все ОК.
А есть альтернатива?
И как реализовать Zoom?


 
Vladimir Kladov   (2008-05-03 08:26) [5]

Есть ещё OpenGL.



Страницы: 1 вся ветка

Текущий архив: 2009.12.13;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.016 c
1-1228221714
Jorjia
2008-12-02 15:41
2009.12.13
ControlGrid - найти номер строки грида по расположенному на ней к


15-1255725008
Юрий
2009-10-17 00:30
2009.12.13
С днем рождения ! 17 октября 2009 суббота


4-1225119197
K1LLADR1LLA
2008-10-27 17:53
2009.12.13
Windows Script Host + COM + ThreadPool


15-1255694354
Zheksonz
2009-10-16 15:59
2009.12.13
Преобразования в СИ


2-1256309090
xyz
2009-10-23 18:44
2009.12.13
скопировать из TStream в файл