Сохраните ImageEnView и метку на нем как Png в Delphi

Я положил TImageEnView в моей форме и поставить ярлык на TImageEnView, Я хочу сохранить этого родителя и ребенка как один Png или Jpg на моем жестком диске.

ImageEnView и метка на нем

Я пишу этот код:

    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, оно все еще является растровым изображением, поэтому вам все еще нужно преобразовать его (спасибо Кобику)

Другие вопросы по тегам