5

这就是我需要的:更快地为 Facebook 页面制作有趣海报的程序。海报有文字、图片和框架(白线和黑色背景)。在这种情况下,我想在海报上插入徽标(png 图像)。

根据图片大小,框架的尺寸(在这种情况下由两个形状组成)必须为图片自动调整大小。

在此处输入图像描述

如何从链接(2个形状组件,2个图像组件,2个标签)中将该图像中的海报保存为图片?

如何做到这一点?使用什么,从哪里开始?

我希望这个问题不会被删除。

4

1 回答 1

9

如果您将所有框架、形状和图片放入一个新的 TPanel(在我的示例中命名为 MainPanel),那么您可以使用:

procedure savePanelAsImage(fpPanel: tPanel; fpFileName: string);
var
   img: TBitmap;
begin
   img := TBitmap.Create;
   try
     img.Width := fpPanel.Width;
     img.Height := fpPanel.Height;
     fpPanel.PaintTo(img.Canvas, 0, 0);
     img.SaveToFile(fpFileName);
   finally
     img.Free;
   end
end;

用法:

savePanelAsImage(MainPanel, 'd:\someFolder\image001.bmp');

笔记:

  • 这是基于 VCL 的示例;
  • 要将图像保存为其他格式(而不是 BMP),请使用:TPngImage (Vcl.Imaging.pngImage) 或 TJPEGImage (Vcl.Imaging.jpeg);
  • 如果您使用 FireMonkey (>= Delphi XE2),您可以利用 someParentComponent.MakeScreenShot();
  • 生成的图像将具有与 tPanel 相同的大小。

为了获得更好的结果/灵活性,我建议使用Delphi 的Graphics32库(它支持图层、图像大小调整等)。

示例表格

生成的图像

于 2012-11-05T18:51:56.907 回答