-
Как масштабировать изображение по размерам окна? Я использую из 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. Как быть?
-
> Проблема в 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;
-
Когда большие фотки, качество страдает!
-
Если так то качество нормальное, но опять тормазнутость: 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;
-
В книге по KOL вычитал используем SetStretchBltMode(DC,halftone); И все ОК. А есть альтернатива? И как реализовать Zoom?
-
Есть ещё OpenGL.
|