在delphi中将ImageEnView及其上的标签保存为Png
Posted
技术标签:
【中文标题】在delphi中将ImageEnView及其上的标签保存为Png【英文标题】:Save ImageEnView and a Label on it as Png in delphi 【发布时间】:2017-09-30 00:52:17 【问题描述】:我在表单上添加了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));
但输出只是没有标签的背景。我怎样才能保存标签?
【问题讨论】:
可能只有我一个人,但我认为您正在尝试保存一个组件“timageenview”,并期望它会自动保存标签(另一个组件)而无需任何特殊实现。如果你想在图片上写点什么,请看这个link 您需要先将图像保存为中间BMP,然后将标签绘制到BMP上,然后以所需格式(PNG、JPG等)将BMP保存到磁盘 【参考方案1】:尝试以下方法:
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;
请小心,以便为您提供您想要的标签大小与图像相同,并且顶部和左侧与图像相同。
注意:我仍然建议你查看我在 cmets 中给你的链接,因为它会帮助你学习一个有价值的工具,甚至可以让你在未来编写自己的组件.
注意 2: 输出图像不是有效的 PNG,它仍然是位图,因此您仍需要对其进行转换。(感谢 Kobik)
【讨论】:
位图还是需要转换成png或者jpg格式的 @kobik 大厅的东西并不完美。我只是按照雷米所说的话,但是我对此进行了测试,它给出了一个很好的 png 图像。不过,我仍然坚持我的笔记。 “它提供了一个很好的 png 图像” - 将TBitmap
保存为 D:\output2.png
不会使输出文件成为有效的 PNG。它仍然是一个位图。
@kobik 我百分百支持你。这就是我写“好”的原因。它不是一个png。正如我所说,我只是按照雷米所说的和 OP 在他的问题中写的内容。
@kobik 我在回答中添加了一条注释。以上是关于在delphi中将ImageEnView及其上的标签保存为Png的主要内容,如果未能解决你的问题,请参考以下文章
在 Delphi 2009 中将字符串转换为 PAnsiChar
在 Delphi 2009 中将字符串转换为 PAnsiChar
如何在 Delphi 2010 中将参数传递给 flash 电影?