Форум: "Основная";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
ВнизРазрешение и размер изображения TMetafile и Microsoft Word. Найти похожие ветки
← →
guav © (2006-08-18 15:23) [0]Требуется записать метафайл с заданым числом пикселей (Width, Height) и заданым DPI (Inch) (например, 273), чтобы при вставке в Word он имел размеры в см, определяемые вышеуказанными св-вами.
Когда задаю эти свойства для EMF, он создаётся всегда с 81 DPI, причём попытка задать DPI приводит к тому что размеры Width, Height в записанном WMF отличаются от заданнных.
Вопрос - можно ли получить EMF с требуемыми DPI и размерами в пикселях, если да, то как, если нет, какой формат следует применить ?
← →
MBo © (2006-08-18 16:02) [1]>чтобы при вставке в Word он имел размеры в см, определяемые вышеуказанными св-вами.
Попробуй задавать не Width, а mmWidth и mmHeight
← →
guav © (2006-08-18 17:03) [2][1] MBo © (18.08.06 16:02)
> Попробуй задавать не Width, а mmWidth и mmHeight
Не получаестя
Задаю mmWidth и mmHeight так:const
MMPerInch = 25.4;
...
MF.MMWidth := Round(FB.X / FRasterDpiX * MMPerInch);
MF.MMHeight := Round(FB.Y / FRasterDpiY * MMPerInch);
{FRasterDpiX = FRasterDpiY = 273}
Получается при значениях этих св-в в диапазоне 100..200 значения Width и Height всего в несколько пискселей и размер изображения при вставке в Word меньше требуемого на пару порядков.
← →
MBo © (2006-08-18 17:24) [3]mmWidth задается в сотых долях миллиметра
← →
guav © (2006-08-18 18:03) [4]
> mmWidth задается в сотых долях миллиметра
да, невнимательно прочитал справку, спасибо.
но не работает всё равно:MF.MMWidth := Round(FB.X / FRasterDpiX * MMPerInch * 100);
MF.MMHeight := Round(FB.Y / FRasterDpiY * MMPerInch * 100);
и размер выходит несколько меньше требуемого.
попытался работать с Bitmap, меняя поля biXPelsPerMeter и biYPelsPerMeter. Работает если этот файл сохранять на диск, но через буфер обмена, используя SaveToClipboardFormat - нет. Как поместить TBitmap в буфер обмена с сохранением этих полей ?
← →
MBo © (2006-08-18 18:17) [5]>и размер выходит несколько меньше требуемого.
Да, мне тоже точно подогнать не удавалось, ошибка в несколько пикселов оставалась.
>поместить TBitmap в буфер обмена с сохранением этих полей
На мой взгляд, эти поля - справочные, свидетельствующие о параметрах контекста, в котором создавался битмап, а главное - размер в пикселах. При необходимости можно соответствующий Map режим в новом контексте сделать, но в своем, а в Word, к примеру, это не пройдет.
← →
guav © (2006-08-18 18:44) [6]> >и размер выходит несколько меньше требуемого.
> Да, мне тоже точно подогнать не удавалось, ошибка в несколько
> пикселов оставалась.
Ошибка в моём случае измеряетcя не в пикселях а в милиметрах. И когда выходит вместо 13 см выходит 11 см, это неприемлемо :-(
> На мой взгляд, эти поля - справочные, свидетельствующие
> о параметрах контекста, в котором создавался битмап, а главное
> - размер в пикселах.
Экспериментально установлено что и Word и другие приложения, в которых предусмотрена работа в физических единицах таки учитывают эти поля. Просто видимо при копировании у копии задаётся старое или стандартное значение. Сейчас пытаюсь выяснить, как скопировать BITMAP вручную без преобразований.
> При необходимости можно соответствующий Map режим в новом
> контексте сделать
Если создать контекст со своим Map-режимом и задать этот контекст для TMetafileCanvas, получится ли метафайл с соответствующим DPI ?
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2006.10.01;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.013 c