Форум: "Media";
Текущий архив: 2011.06.19;
Скачать: [xml.tar.bz2];
ВнизWMF. Переформулирую вопрос Найти похожие ветки
← →
Феликс (2008-06-05 11:43) [0]Как перевести значения координат из логических юнитов в пиксели?
← →
Sapersky (2008-06-05 13:08) [1]См. Graphics -> TMetafile.GetWidth/GetHeight.
← →
Феликс (2008-06-05 17:29) [2]Смотрел.. Эту строку видел:
Result := MulDiv(FWidth, ScreenLogPixels, HundredthMMPerInch);
Увы. В файле координаты непонятно в каких единицах измерения, а здесь FWidth в сотых долях мимлимметра. А примерно к такой же формуле я и сам до этого пришёл..
То есть, для примера, fWidth у меня равен 28549, в результате получаем 1079 пикселей, а логические единицы для такой координаты -- 1152. Вот этого и не понимаю..
← →
Sapersky (2008-06-06 14:51) [3]Там есть ещё вариант:
begin { convert 0.01mm units to referenceDC device pixels }
GetEnhMetaFileHeader(FHandle, Sizeof(EMFHeader), @EMFHeader);
Result := MulDiv(FWidth, { metafile width in 0.01mm }
EMFHeader.szlDevice.cx, { device width in pixels }
EMFHeader.szlMillimeters.cx*100); { device width in 0.01mm }
end
FWidth/FHeight получаются из EMFHeader.rclFrame.
Вообще если работает построение оболочки перебором всех элементов, то ИМХО лучше так и оставить (мало ли, какая-нибудь кривая программа запишет в заголовок неверные данные), если это не слишком медленно.
← →
Феликс (2008-06-06 16:54) [4]Да, этот код тоже смотрел. Нет, всё не то. Я по другому пути решил идти -- выведу канвас в bmp, а уж его-то я просканирую запросто. И всё будет так, как мне нужно..
Страницы: 1 вся ветка
Форум: "Media";
Текущий архив: 2011.06.19;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.002 c