如何添加图片边框并在图像中插入文本?

5
这是我需要的内容:快速制作Facebook页面有趣海报的程序。 海报包含文本、图片和边框(白线黑底)。 在这种情况下,我希望在海报上插入标志(png图像)。
根据图片大小,边框的尺寸(在此情况下由两个形状组成)必须自动调整大小以适应图片。
如何将链接中的图像保存为海报(2个形状组件,2个图像组件,2个标签)?
如何完成这个目标?要使用什么,从哪里开始?
我希望这个问题不会被删除。

你使用的是哪个 Delphi 版本? - iPath ツ
2
你个人认为不应该使用Shapes、Panels、Labels等控件。你可以使用Canvas,例如位图或HDC与GDI+,以获得无限的选择。这并不太困难,而且你会有无限的可能性。 - bummi
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库(它支持图层、图像重新调整大小等)。

示例表单

生成的图像


很好的答案。提供工作示例和建议替代方案可以获得额外加分。 - Wouter van Nifterick
我使用Delphi XE3。谢谢回答,@WoutervanNifterik已经说得很清楚了。 :) - Canis Lupus

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接