Сохраните ImageEnView и метку на нем как Png в 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));
Но вывод только фон без метки. Как я могу сохранить этикетку?
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;
Просто будьте осторожны, чтобы дать вам то, что вы хотите, чтобы размер метки совпадал с изображением, а верхний и левый - с изображением.
Примечание. Я все же рекомендую вам увидеть ссылку, которую я дал вам в комментариях, потому что она поможет вам освоить ценный инструмент, который даже позволит вам написать свой собственный компонент в будущем.
Примечание 2: выходное изображение не является допустимым PNG, оно все еще является растровым изображением, поэтому вам все еще нужно преобразовать его (спасибо Кобику)