![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Wmf, SetWorldTransform и МеtaFileCanvas [D6, WinXP]
Jimmy © (2007-10-15 21:54:00)Если построить эллипс на MetaFileCanvas, потом повернуть его с помощью SetWorldTransform и сохранить в wmf, то этот эллипс сохраняется не как "эллипс", а как "набор кривых, напоминающих эллипс", причем приближение грубое. Если сохранять в emf, то эллипс вообще не повернут. Вопрос: можно повернуть эллипс без SetWorldTransform, но чтоб он остался эллипсом в полном смысле слова или как корректно сохранить все это в wmf или emf после SetWorldTransform? Я как-то уже задавал похожий вопрос, но проблема осталась, позволю себе сделать это еще раз. Заранее спасибо!
Ins (2007-10-19 11:50:00) [1]
> а Corel не поворачивает эллипс.
Рискну предположить, что дело в отсутствии вызова
SetGraphicsMode(GM_ADVANCED);
Хотя может и нет, who knows...
Jimmy (2007-10-18 17:06:00) [2]>MBo
Не помогло. Все равно ACDSee не правильно трактует размер, а Corel не поворачивает эллипс.
MBo (2007-10-17 07:02:00) [3]>все они отображают этот emf-файл по разному
Возможно, надо установить MMHeight и MMWidth
sdubaruhnul (2007-10-16 20:42:00) [4]> Jimmy (16.10.07 20:33) [2]
Из перечисленных тобой программ только Corel Draw - редактор.
Jimmy (2007-10-16 20:33:00) [5]Прежде всего большое спасибо за ответ! Стал сравнивать этот код со своим, и пришел к выводу что делаю практически тоже самое. Что же не так? Я определял, что моя программа некорректно создает emf-файл потому что после открытия его в Corel Draw, он отображался некорректно. Не мог же я подумать, что ошибается Corel. Установил еще разные просмотрщики, и к удивлению обнаружил, что все они отображают этот emf-файл по разному. "Просмотр изображений и факсов Windows" - так как я задумал, ACDSee растягивает рисунок, Irfan - корректно, Corel - вообще криво. Не поделитесь мыслями по этому поводу?
MBo (2007-10-16 05:36:00) [6]стоит свои слова подтверждать кодом.
procedure TForm2.Button1Click(Sender: TObject);
var
emf: TMetaFile;
mfc: TMetaFileCanvas;
xf: TXForm;
begin
emf:= TMetaFile.Create;
emf.Enhanced := True;
mfc:= TMetaFileCanvas.Create(emf, 0);
xf.eM11 := 0.7;
xf.eM12 := -0.7;
xf.eM21 := 0.7;
xf.eM22 := 0.7;
xf.eDx := 0;
xf.eDy := 100;
SetWorldTransform(mfc.Handle, xf);
mfc.Ellipse(0, 100, 200, 200);
mfc.Free;
Canvas.Draw(0,0,emf);
emf.SaveToFile('e:\test.emf');
emf.Free;
end;