将 ImageEnView 及其标签保存为 delphi 中的 Png

Save ImageEnView and a Label on it as Png in delphi

我在我的表格上放了一个 TImageEnView 并在 TImageEnView 上放了一个标签。 我想在我的硬盘上将这对父子保存为一张 Png 或 Jpg。

我写这段代码:

    CharLbl.Font.Size := I;
    CharLbl.Top:=22;
    ImageEnIO1.SaveToFile('D:\output2.png'); // Save in thread 2
    ImageEnIO1.WaitThreads(false);
    ShowMessage(inttoStr(I));

但是输出的只是没有标签的背景。我怎样才能同时保存标签?

尝试以下操作:

var
paintbmp:tbitmap;

begin
paintbmp:=tbitmap.Create;
  try
  paintbmp.Width:=ImageEnIO1.Width;
  paintbmp.Height:=ImageEnIO1.Height;

  paintbmp.Canvas.Draw(0,0,ImageEnIO1.Picture.Graphic);
  paintbmp.Canvas.CopyRect(rect(0,0,ImageEnIO1.Width,ImageEnIO1.Height)
                          ,CharLbl.Canvas
                          ,rect(0,0,ImageEnIO1.Width,ImageEnIO1.Height));

  paintbmp.SaveToFile('D:\output2.png');
  finally
  paintbmp.Free;
  end;
end;

请小心,以便为您提供您想要的标签大小与图像相同,顶部和左侧与图像相同。

注意:我仍然建议您查看我在评论中给您的 link,因为它会帮助您学习一个有价值的工具,甚至可以启用以后自己写组件。

注意 2: 输出图像不是有效的 PNG 它仍然是位图,因此您仍然需要转换它。(感谢 Kobik)