Конференция "Media" » Wmf, SetWorldTransform и МеtaFileCanvas [D6, WinXP]
 
  • Jimmy (15.10.07 21:54) [0]
    Если построить эллипс на MetaFileCanvas, потом повернуть его с помощью SetWorldTransform и сохранить в wmf, то этот эллипс сохраняется не как "эллипс", а как "набор кривых, напоминающих эллипс", причем приближение грубое. Если сохранять в emf, то эллипс вообще не повернут. Вопрос: можно повернуть эллипс без SetWorldTransform, но чтоб он остался эллипсом в полном смысле слова или как корректно сохранить все это в wmf или emf после SetWorldTransform? Я как-то уже задавал похожий вопрос, но проблема осталась, позволю себе сделать это еще раз. Заранее спасибо!
  • MBo © (16.10.07 05:36) [1]
    стоит свои слова подтверждать кодом.


    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;

  • Jimmy (16.10.07 20:33) [2]
    Прежде всего большое спасибо за ответ! Стал сравнивать этот код со своим, и пришел к выводу что делаю практически тоже самое. Что же не так? Я определял, что моя программа некорректно создает emf-файл потому что после открытия его в Corel Draw, он отображался некорректно. Не мог же я подумать, что ошибается Corel. Установил еще разные просмотрщики, и к удивлению обнаружил, что все они отображают этот emf-файл по разному. "Просмотр изображений и факсов Windows" - так как я задумал, ACDSee растягивает рисунок, Irfan - корректно, Corel - вообще криво. Не поделитесь мыслями по этому поводу?
  • sdubaruhnul © (16.10.07 20:42) [3]
    >Jimmy   (16.10.07 20:33) [2]

    Из перечисленных тобой программ только Corel Draw - редактор.
  • MBo © (17.10.07 07:02) [4]
    >все они отображают этот emf-файл по разному
    Возможно, надо установить MMHeight и MMWidth
  • Jimmy (18.10.07 17:06) [5]
    >MBo
    Не помогло. Все равно ACDSee не правильно трактует размер, а Corel не поворачивает эллипс.
  • Ins © (19.10.07 11:50) [6]

    > а Corel не поворачивает эллипс.

    Рискну предположить, что дело в отсутствии вызова
    SetGraphicsMode(GM_ADVANCED);

    Хотя может и нет, who knows...
 
Конференция "Media" » Wmf, SetWorldTransform и МеtaFileCanvas [D6, WinXP]
Есть новые Нет новых   [134431   +10][b:0][p:0.002]