Главная страница
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
Время: 1.235 c
15-1157899637
Translater
2006-09-10 18:47
2006.10.01
Lingo и словари


2-1157807035
DelphiN#1
2006-09-09 17:03
2006.10.01
СкринШоты


1-1155809011
harisma
2006-08-17 14:03
2006.10.01
Вызов метода предка класса минуя непосредственного предка.


2-1158076533
MMX
2006-09-12 19:55
2006.10.01
VarArrayOf


2-1158087167
ukku
2006-09-12 22:52
2006.10.01
Свойство-массив как основное свойство объекта