Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 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.46 MB
Время: 0.015 c
2-1157830754
Димон
2006-09-09 23:39
2006.10.01
Объявление типов


1-1155940453
Kos[UFO]
2006-08-19 02:34
2006.10.01
Класс объекта


15-1158016470
Vert45
2006-09-12 03:14
2006.10.01
Вопросы по PHP


15-1157898818
Дураг
2006-09-10 18:33
2006.10.01
А есть ли шаблоны проектирования в Delphi?


15-1157705932
pavel_guzhanov
2006-09-08 12:58
2006.10.01
Подскажите, что можно почитать про программирование с





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский