emf
Файлы - это всего лишь список команд GDI. Фактически, их можно легко «воспроизвести» системой, используя стандартную команду Windows GDI (в Delphi TMetaFile
- это всего лишь оболочка этих API).
Когда IrfanView или FastReport оказывает содержание метафайл, они просто используют соответствующие команды для Windows GDI. Когда Windows 7 Paint отображает содержимое метафайла, он использует средство визуализации GDI +. Я даже думаю, что он внутренне конвертирует файл emf
в формат emf+
, а затем визуализирует его с помощью антиалиасинга с использованием GDI +.
Таким образом, если файл emf
делает неправильно в IrfanView или FastReport, я подозреваю, что это потому, что ваш метафайл не хорошо сформирован: третья сторона графического движка вы используете производство нестандартного эдса. Возможная проблема заключается в том, что используемый шрифт отсутствует в целевой системе, а GDI не заменяет шрифт тем же, что и GDI +.
Другая возможность состоит в том, что файл emf
это может быть двойной формат : он содержит как emf
формат (который не был должным образом создан так не отображается правильно с помощью GDI) и формат emf+
(который показан как ожидается, с использованием GDI +) , Обычно этот двойной форматemf/emf+
не должен существовать: даже официальная библиотека GDI + не позволяет сохранять содержимое метафайла в emf +. Это своего рода «монстр», созданный вашей сторонней библиотекой.
Я предлагаю следующее:
- Скачать и проверить файл
emf
с EmfExplorer;
- Попробуйте использовать GDI + для рендеринга метафайла;
- Попробуйте использовать преобразователь API
emf
на emf+
.
Для использования GDI + ознакомьтесь с открытым исходным кодом SynGdiPlus unit: он добавит GDI + anti-aliaising к вашему созданному растровому изображению. Он способен конвертировать emf
в emf+
. Он будет использовать собственный API Vista/Seven (как и краска для Windows 7) или простой код Delphi под Windows XP.
Как вы создаете мета-файл? Как насчет кода? –
Глядя более внимательно на это на реальном компьютере, я признаю такой эффект. Я видел его с выходом моей собственной программы. Я думаю, что это просто характер того, как некоторые пакеты растеризуют метафайл. Очевидно, что метафайл является точным, потому что один пакет отлично отображает его. Другая программа, на которую вы должны обратить внимание, - это Word. Если вы хотите экспортировать для потребления растровым графическим пакетом, тогда экспортируйте его как растровое изображение в формате PNG. –
благодарю вас за ваши комментарии. @DavidHeffernan: метафайл создается графическим движком третьей стороны. –