AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Skaliertes ausdrucken eines Metafiles
Thema durchsuchen
Ansicht
Themen-Optionen

Skaliertes ausdrucken eines Metafiles

Ein Thema von Tenobaal · begonnen am 25. Jul 2014 · letzter Beitrag vom 26. Jul 2014
 
Tenobaal

Registriert seit: 9. Mai 2013
21 Beiträge
 
Delphi XE5 Professional
 
#1

Skaliertes ausdrucken eines Metafiles

  Alt 25. Jul 2014, 12:00
Hi, ich habe ein Problem beim ausdrucken von Metafiles.
Mein Programm erstellt zur Laufzeit eine Instanz von TMetafiles und zeichnet darauf diverse Geometrien und Texte. Als Beispiel habe ich die Prozedur "ZeichneWas" beigefügt, welche mein Vorgehen beim zeichnen beschreibt. Anschließend wird das Metafile in das Canvas einer TImage Komponente geladen (siehe Bild).
Nun möchte ich das Metafile skaliert ausdrucken, was mir aber nicht gelingt. Ich habe diverse Codeschnipsel aus Büchern und Foreneinträgen ausprobiert z.B. die Prozeduren Drucken und Drucken2 (beide machen im Prinzip das gleiche). Zusätzlich habe ich mit SetMapMode() sämtliche Koorinatensysteme des Druckers (MM_TEXT, MM_ISOTROPIC, MM_ANISOTROPIC etc.) ausprobiert. Mein Metafiles wird aber nie richtig skaliert. Es ist stets die obere linke Ecke des Metafiles auf dem Blatt ausgedruckt, anstatt das komplette Bild.
Die Metafiles habe ich im .EMF und .WMF Format exportiert und dem Anhang beigefügt.

Delphi-Quellcode:
//Globale Variable
var WMF:TMetafile;

procedure ZeichneWas;
Begin
WMF.clear;
WMF.mmheight := Round(YIntern); //Y-Auflösung 500 Pixel
WMF.mmwidth := Round(XIntern); //X-Auflösung 750 Pixel
MetaCanvas:=TMetafileCanvas.Create(WMF, 0);
try
  SetMapMode(MetaCanvas.Handle,MM_ANISOTROPIC);
  
  (*
  Dreiecke zeichnen und beschriften...
  ...
  ...
  ...
  *)

  
  MetaCanvas.Rectangle(0,0,wmf.mmWidth,wmf.mmHeight); //Rahmen zeichnen
finally
  MetaCanvas.Free;
end;
End;

//Drucken des Metafile
procedure TFormNetview.Drucken;
var Scale:Double; Hoehe,Breite:Integer;
Begin
  printer.Orientation:=poLandscape;
  printer.BeginDoc;
    Scale := Min(Printer.PageWidth/WMF.mmWidth,Printer.PageHeight/WMF.mmHeight);
    Printer.Canvas.StretchDraw(Rect(0, 0, Round(WMF.mmWidth*Scale), Round(WMF.mmHeight*Scale)),WMF);
  printer.EndDoc
End;

procedure TFormNetview.Drucken2;
Begin
  printer.Orientation:=poLandscape;
  printer.BeginDoc;
    Printer.Canvas.StretchDraw(Rect(0,0,Printer.PageWidth,Printer.PageHeight), WMF);
  printer.EndDoc
End;
Angehängte Grafiken
Dateityp: jpg Unbenannt.JPG (121,7 KB, 17x aufgerufen)
Angehängte Dateien
Dateityp: zip Metafile.zip (214,0 KB, 2x aufgerufen)

Geändert von Tenobaal (25. Jul 2014 um 12:03 Uhr)
  Mit Zitat antworten Zitat
 

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:10 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz