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

时间:2014-05-30 07:34:24

标签: 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; 

此处,MyBitMap的类型为TBitMap,我已加载原始位图图片。

AND,这是正确的做法吗?

2 个答案:

答案 0 :(得分:4)

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

StretchDraw方法非常快,是canvas的一部分。你所描述的质量并不那么精彩。如果你想使用StretchDraw将PixelFormat更改为pf24bit并删除FillRect-line。

希望这有助于:)

答案 1 :(得分:0)

可能是因为你有PixelFormat:= pf1bit;

至少使用pf8bit或更好的pf24bit以获得更好的结果,因为你不关心文件大小