如何在 Delphi 的 TImage 中平铺图像?

为什么我需要它:我可以创建一个并将我的图像存储在那里,而不是在运行时创建更多的 TImage,知道它会“适合”直到它达到 TImage 的高度和宽度。

请提出任何想法来做到这一点。

谢谢!

编辑:请注意,我不是要求拉伸(stretch)图像,而是通过重复图像来填充 Canvas 。

最佳答案

以下是我使用的函数,采用现有的 TImage 组件并将其平铺在目标 Canvas 上:

procedure TileImage(const Source:tImage;
    Target: TCanvas;
    TargetHeight,TargetWidth:integer);
// Tiles the source image over the given target canvas
var
  X, Y: Integer;
  dX, dY: Integer;
begin
  dX := Source.Width;
  dY := Source.Height;
  Y := 0;
  while Y < TargetHeight do
    begin
      X := 0;
      while X < TargetWidth do
        begin
          Target.Draw(X, Y, Source.Picture.graphic);
          Inc(X, dX);
        end;
      Inc(Y, dY);
    end;
end;

因为 tLabel 会暴露 Canvas ,所以您可以执行以下技巧:
TileImage(Image1,Label1.Canvas,Label1.Height,Label1.Width);

关于delphi - 如何在 TImage 中平铺图像?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1268410/

10-09 18:28