将 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)
我在我的表格上放了一个 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)