Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Как конвертировать Bitmap в EMF (Enhanced Metafile)

Delphi , Графика и Игры , MetaFile

Как конвертировать Bitmap в EMF (Enhanced Metafile)

Автор: http://www.swissdelphicenter.ch

function bmp2emf(const SourceFileName: TFileName): Boolean;
// Converts a Bitmap to a Enhanced Metafile (*.emf)
var
  Metafile: TMetafile;
  MetaCanvas: TMetafileCanvas;
  Bitmap: TBitmap;
begin
  Metafile := TMetaFile.Create;
  try
    Bitmap := TBitmap.Create;
    try
      Bitmap.LoadFromFile(SourceFileName);
      Metafile.Height := Bitmap.Height;
      Metafile.Width := Bitmap.Width;
      MetaCanvas := TMetafileCanvas.Create(Metafile, 0);
      try
        MetaCanvas.Draw(0, 0, Bitmap);
      finally
        MetaCanvas.Free;
      end;
    finally
      Bitmap.Free;
    end;
    Metafile.SaveToFile(ChangeFileExt(SourceFileName, '.emf'));
  finally
    Metafile.Free;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  bmp2emf('C:\TestBitmap.bmp');
end;

Перевод на русский язык:

Код Delphi, который конвертирует изображение в формате bitmap в Enhanced Metafile (EMF). Функция bmp2emf принимает путь к файлу bitmap в качестве входного параметра и сохраняет его в виде файла EMF.

Расшифровка кода:

  1. Создается объект TMetaFile, который используется для хранения метаданных.
  2. Загружается изображение bitmap из указанного файла с помощью метода LoadFromFile класса TBitmap.
  3. Устанавливается высота и ширина метафайла в соответствии с размерами bitmap.
  4. Создается объект TMetafileCanvas, который используется для рисования bitmap на метафайл.
  5. Рисуется bitmap на метафайл с помощью метода Draw класса TMetafileCanvas.
  6. Наконец, сохраняется метафайл в файл EMF с тем же именем, что и оригинальный файл bitmap, но с расширением .emf.

Процедура Button1Click вызывается при клике кнопки на форме и вызывает функцию bmp2emf с путь к файлу bitmap в качестве входного параметра.

Советы по улучшению кода:

  • Вместо использования жестких путей и имен файлов, рассмотрите использование параметров или настроек для увеличения гибкости кода.
  • Можете добавить обработку ошибок для случаев, когда файл bitmap не может быть загружен или сохранен.
  • Рассмотрите использование более robust способ создания файла EMF, например, с помощью библиотеки GDI+ или Graphics32, которые предоставляют больше функций и гибкости для работы с метафайлами.

Альтернативное решение, использующее классы TBitmap и TMetafileCanvas:

function bmp2emf(const SourceFileName: TFileName): Boolean;
var
  Metafile: TMetaFile;
  Bitmap: TBitmap;
begin
  Result := False;

  try
    Bitmap := TBitmap.Create;
    try
      Bitmap.LoadFromFile(SourceFileName);
      Metafile := TMetaFile.Create;
      try
        Metafile.Height := Bitmap.Height;
        Metafile.Width := Bitmap.Width;
        with TMetafileCanvas.Create(Metafile, 0) do
        begin
          try
            Draw(0, 0, Bitmap);
          finally
            Free;
          end;
        end;
        Metafile.SaveToFile(ChangeFileExt(SourceFileName, '.emf'));
      finally
        Metafile.Free;
      end;
    finally
      Bitmap.Free;
    end;

    Result := True;
  except
    Result := False;
  end;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  bmp2emf('C:\TestBitmap.bmp');
end;

Код более компактен и легче для чтения, но все еще использует тот же подход, что и оригинальный код.

Конвертация Bitmap в EMF (Enhanced Metafile) выполняется с помощью функции bmp2emf, которая использует компонент TMetaFile и TMetafileCanvas для создания электронного метафайла из исходного растрового изображения.


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: MetaFile ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 12:23:50/0.014330148696899/1