Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как масштабировать изображение по размерам окна? [Delphi, Windows]


ILPU ©   (2008-05-02 14:44:00) 

Как масштабировать изображение по размерам окна?
Я использую из 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.
Как быть?


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

Есть ещё OpenGL.


ILPU   (2008-05-03 08:19:00) [2]

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


ILPU   (2008-05-03 06:07:00) [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 05:51:00) [4]

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


Compiler   (2008-05-02 22:51:00) [5]

> Проблема в  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;


Наверх

Титульная страница Поиск, карта сайта Написать письмо