Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Звук, графика и видео > Form To EMF даже


Автор: Delphist 15.8.2006, 10:40
Ниже расположенный код позволяет сохранить все, что расположено на форме в виде векторного рисунка формата emf.
Код

procedure TfmTech.FormToEmf;
var
  mf: TMetaFile;
  mfCanvas: TMetaFileCanvas;
begin

  mf := TMetaFile.Create;
  try
    mf.Width := fmTech.ClientWidth;
    mf.Height := fmTech.ClienHeight;
    mf.Enhanced := true;
    mfCanvas := TMetaFileCanvas.Create(mf, 0);
    try
      fmTechViewOrFrame.PaintTo(mfCanvas.Handle, 0, 0);
    finally
      mfCanvas.Free;
    end;
      mf.SaveToFile('D:\MyEmf.emf');
  finally
    mf.Free;
  end;
end;

Но остается одна проблема - как коректно сохранить компоненты формы в emf, если они заходят за границу этой формы.

Автор: imageman 16.8.2006, 09:51
у тебя два раза mfCanvas.Free;

Пробуй увеличить размеры формы так, чтобы влезли все компоненты.

Второй вариант - уменьши все компоненты, чтобы они влезни на форму (вроде где-то есть ScaleTo  - а таким образом масштабировал всё, что расположено на панельке).

Третий вариант через Print.

Автор: Delphist 17.8.2006, 07:52
Цитата(imageman @ 16.8.2006,  10:51)
у тебя два раза mfCanvas.Free;

Третий вариант через Print.

Где ты рассмотрел два раза mfCanvas.Free smile 

Как это через Print.

Автор: imageman 17.8.2006, 18:50
Цитата

Где ты рассмотрел два раза mfCanvas.Free

упс smile - похожие имена переменных - mf

а через принер я имел в виду на виртуальный принтер, но тебе, видимо, всё равно не пойдет, так что или уменьшай контролы или увеличивай форму.


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)