在 Delphi 中使用 StretchDraw 方法拉伸位图

1 delphi canvas bitmap delphi-xe4

我有一个尺寸为(宽度= 250,高度= 200)的位图图像。我用以下代码片段对其进行拉伸,但质量下降了。有没有办法在拉伸位图图像的同时保持其质量?

with Bitmap do
begin
  Width := 200;
  Height := 150;
  PixelFormat := pf1bit;    
  TransparentMode := tmAuto;
  Canvas.CopyMode := cmSrcCopy;
  Canvas.FillRect(Rect(0, 0, Width, Height));
  Canvas.StretchDraw(Rect(0, 0, Width, Height), MyBitMap);
end; 
Run Code Online (Sandbox Code Playgroud)

这里,是我加载原始位图图像的MyBitMap类型。TBitMap

并且,这是这样做的正确方法吗?

fto*_*ler 5

是一个非常好的过程,称为SmoothResize(abmp:TBitmap; NuWidth,NuHeight:integer); 。它能够很好地调整 TBitmap 的宽度。不要忘记添加两个类型声明。

StretchDraw方法非常快并且是canvas的一部分。质量正如你所描述的那样,不是很出色。如果您想使用 StretchDraw,请将 PixelFormat 更改为 pf24bit 并删除 FillRect 线。

希望这可以帮助 :)