Печать картинки в FastReport

r77
Дата: 11.05.2011 10:05:49
Кроик Семён
r77,

>> Соколинский Борис:
>> Используй метафайл.

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

procedure PrintPicture(APicture: TPicture;
                       AOrientation: TPrinterOrientation;
                       AWithPreview: boolean);
var
   Rep   : TfrxReport;
   Page  : TfrxReportPage;
   Pict  : TfrxPictureView;
begin
   Rep:=TfrxReport.Create(nil);
   try
      Rep.Clear();

      Page:=TfrxReportPage.Create(Rep);
      Page.CreateUniqueName();
      Page.SetDefaults();
      Page.Orientation:=AOrientation;


      Pict:=TfrxPictureView.Create(Page);
      Pict.CreateUniqueName();
      Pict.Align:=baClient;

      Pict.Picture.Assign(APicture);

      if AWithPreview then
         Rep.ShowReport(true)
      else
      begin
         Rep.PrepareReport(true);
         Rep.Print();
      end;
   finally
      Rep.Free();
   end;
end;
//------------------------------------------------------------------------------
procedure TForm1.btnTestPrintClick(Sender: TObject);
var
   Pict     : TPicture;
   MetaFile : TMetaFile;
   Canv     : TMetafileCanvas;
begin
   Pict:=TPicture.Create();
   try
      MetaFile:=Pict.Metafile;
      MetaFile.Width:=100;
      MetaFile.Height:=100;

      Canv:=TMetafileCanvas.Create(MetaFile, 0);
      try
         Canv.MoveTo(0,0);
         Canv.LineTo(100,100);

         Canv.Ellipse(10,10,90,90);
      finally
         FreeAndNil(Canv);
      end;

      PrintPicture(Pict,poLandscape,true);
   finally
      FreeAndNil(Pict);
   end;
end;



Добрый день.

Все получилось отлично, но следющий момент почему-то пунктирная линия отображается пунктирной, а печатается сплошной. У метафайлов нет никаких ограничений? или что вообще это может быть?

Спасибо.
Кроик Семён
Дата: 11.05.2011 11:24:53
Вполне, кстати, может быть, что это оно:

Соколинский Борис
Кроик Семён
как оказалось, замечательный способ.

Ну дык!
Правда, есть один нюанс: если рисунок сложный, то драйвер принтера проглючить может (HP особенно).
Но с треугольниками все должно быть нормально.
Кроик Семён
Дата: 11.05.2011 11:27:00
P.S.

если что, то пунктирную линию можно как набор отрезков изобразить, так ведь?
(это как возможный выход из тупика технологии)
r77
Дата: 11.05.2011 11:29:38
Кроик Семён
Вполне, кстати, может быть, что это оно:

Соколинский Борис
пропущено...

Ну дык!
Правда, есть один нюанс: если рисунок сложный, то драйвер принтера проглючить может (HP особенно).
Но с треугольниками все должно быть нормально.


Точно, на 2-х разных НР и печатали...
r77
Дата: 11.05.2011 11:30:55
Кроик Семён
P.S.

если что, то пунктирную линию можно как набор отрезков изобразить, так ведь?
(это как возможный выход из тупика технологии)


Спасибо, попробую поигратся...
p.s. все так красиво получилось, а тут засада...
Соколинский Борис
Дата: 11.05.2011 11:36:28
r77
Точно, на 2-х разных НР и печатали...

Выложи метафайл сюда.
Из всех HP что я видел глюков разной степени противности не было только на LJ 1000.
Кроик Семён
Дата: 11.05.2011 11:41:24
r77,

И, кстати еще (вдогонку)
На FastReport'e, ведь, свет клином не сошелся.
Можно и на канве принтера напрямую рисовать, без всяких посредников.
r77
Дата: 11.05.2011 11:42:32
Соколинский Борис
r77
Точно, на 2-х разных НР и печатали...

Выложи метафайл сюда.
Из всех HP что я видел глюков разной степени противности не было только на LJ 1000.


Ох,это ж его сохранять надо ...а что сам метафайл может быть какой-то не такой?
r77
Дата: 11.05.2011 11:43:56
Кроик Семён
r77,

И, кстати еще (вдогонку)
На FastReport'e, ведь, свет клином не сошелся.
Можно и на канве принтера напрямую рисовать, без всяких посредников.


Сошелся, т.к. чертеж должен печататся в печатных формах,т.е. кроме чертежа печатается еще куча всякой информации определенного формата...
Соколинский Борис
Дата: 11.05.2011 11:48:36
[quot r77][quot Соколинский Борис]Ох,это ж его сохранять надо ...
О да, забыл что написать Metafile.SaveToFile - очень тяжелая работа, извини.
r77
а что сам метафайл может быть какой-то не такой?
Можно проверить на других принтерах, если тебе это нужно, конечно.