Discussion:
TMetafile und WMF-Dateien
(zu alt für eine Antwort)
Jürgen
2010-07-29 10:11:14 UTC
Permalink
Hallo,
ich verwende das WMF-Dateiformat für frei skalierbare Grafiken, die z.B.
mit OpenOffice Draw erzeugt wurden.

Mittels TMetafile lassen sich diese Grafiken in Delphi leicht und
elegant laden und anzeigen. Probleme bekomme ich jedoch, wenn in der
WMF-Datei Text - z.B. für Beschriftungen – enthalen ist. Während alle
mir bekanntem Grafik-Viewer auch den Text klar und korrekt wiedergeben,
ist er bei der Anzeige im Delphi-Programm garnicht oder kaum lesbar.

Ich verwende Delphi 5. Ist euch dieses Phänomen bekannt?
Kennt jemand vielleicht einen Weg die Grafik mitsamt Text korrekt
darzustellen?

Für Hinweise wäre ich sehr dankbar.
Jürgen
Peter
2010-07-29 12:58:03 UTC
Permalink
Post by Jürgen
Hallo,
ich verwende das WMF-Dateiformat für frei skalierbare Grafiken, die
z.B. mit OpenOffice Draw erzeugt wurden.
Mittels TMetafile lassen sich diese Grafiken in Delphi leicht und
elegant laden und anzeigen. Probleme bekomme ich jedoch, wenn in der
WMF-Datei Text - z.B. für Beschriftungen – enthalen ist. Während alle
mir bekanntem Grafik-Viewer auch den Text klar und korrekt
wiedergeben, ist er bei der Anzeige im Delphi-Programm garnicht oder
kaum lesbar.
Ich verwende Delphi 5. Ist euch dieses Phänomen bekannt?
Kennt jemand vielleicht einen Weg die Grafik mitsamt Text korrekt
darzustellen?
Kannst Du anstelle der WMF EMF (enhanced metafile) Dateien erzeugen?
Das funktioniert normalerweise besser, da EMF mehr Information über
Dinge wie den beim Erstellen der Datei verwendeten mapping mode enthält.
--
Peter Below
Jürgen
2010-07-29 14:40:32 UTC
Permalink
Post by Peter
Kannst Du anstelle der WMF EMF (enhanced metafile) Dateien erzeugen?
Das funktioniert normalerweise besser, da EMF mehr Information über
Dinge wie den beim Erstellen der Datei verwendeten mapping mode enthält.
Ja, das kann OpenOffice auch ... aber dann weiß ich nicht weiter:

Wie muss die EMF-Datei eingelesen & zum Schirm gebracht werden?

Für WMFs verwende ich folgendes

////////////////
procedure TForm1.Button2Click(Sender: TObject);
var HelpWMF : TMetaFile;
ZRect : TRect;
begin
HelpWMF := TMetafile.Create;
HelpWMF.LoadFromFile('.\wegzeit_03.wmf');
With RegelBox do begin
ZRect.Left := 1;
ZRect.Top := 1;
ZRect.Right := Width;
ZRect.Bottom := Height;
Canvas.StretchDraw( ZRect, HelpWMF);
end;
HelpWMF.Free;
end;
////////////////

Wenn ich die gleiche procedure auf die EMF-Datei anwende, wird leider
gar nichts angezeigt. :-(

Sorry, da muss ich noch etwas forschen ...
Peter
2010-07-29 15:59:13 UTC
Permalink
Post by Jürgen
Post by Peter
Kannst Du anstelle der WMF EMF (enhanced metafile) Dateien erzeugen?
Das funktioniert normalerweise besser, da EMF mehr Information über
Dinge wie den beim Erstellen der Datei verwendeten mapping mode enthält.
Wie muss die EMF-Datei eingelesen & zum Schirm gebracht werden?
Exact wie ein WMF, TMetafile.LoadFromFile kann EMFs problemlos
verarbeiten.
Post by Jürgen
Wenn ich die gleiche procedure auf die EMF-Datei anwende, wird leider
gar nichts angezeigt. :-(
Sollte aber funktionieren. Versuch doch mal, das EMF zu Testzwecken in
ein TImage zu laden.
--
Peter Below
Steffen Christgau
2010-08-01 18:45:52 UTC
Permalink
[Metafile und Textausgaben]
Ich verwende Delphi 5. Ist euch dieses Phänomen bekannt?
Kennt jemand vielleicht einen Weg die Grafik mitsamt Text korrekt
darzustellen?
Ist ist den von dir genutzten WMF-Datei der mapping mode gesetzt?
Wenn nicht, würde es eventuell helfen, wenn du ihn mit der
WinAPI-Funktion SetMapMode auf einen passenden Wert setzen.

Ob der Modus im Metafile gesetzt wird, kannst du bspw. mit "EMFExplorer"
oder "MetafileExplorer" manuell überprüfen. In deinem Programm könntest
du das durch Enumeration über die Metafile-Records machen.

Gruß


Steffen

Loading...