Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.10.01;
Скачать: CL | DM;

Вниз

Разрешение и размер изображения 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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.039 c
2-1157903717
Blacksus
2006-09-10 19:55
2006.10.01
Как из DLL изменить свойства объекта?


15-1157968326
Сергей_С
2006-09-11 13:52
2006.10.01
DCU, собранная под Delphi6 не компилируется под Delphi7


2-1158135307
Chaser
2006-09-13 12:15
2006.10.01
Как определить скорость копирования файла по сети


1-1155727044
Kos[UFO]
2006-08-16 15:17
2006.10.01
Inline функции


1-1155717646
webpauk
2006-08-16 12:40
2006.10.01
Обращение к классу объектов