Einzelnen Beitrag anzeigen

flipdascript

Registriert seit: 20. Mai 2008
25 Beiträge
 
Delphi 2010 Professional
 
#1

Metafile Auflösung geht verloren?

  Alt 17. Dez 2008, 13:15
Hallo zusammen!

Ich möchte mit meiner Anwendung Metafiles aus der Windows Zwischenablage entgegen nehmen.
Das klappt auch generell sehr gut, allerdings geht mir die Ausflösung dabei verloren.

- Ich lege ein 128 x 96 Pixel großes Bitmap in MSPaint an. (MSPaint benutzt standardmäßig eine Auflösung von 96 DPI)
--> Das entspricht also ca. der Größe: 33,95 x 25.46 mm
- Ich wähle "Alles markieren" und kopiere das Bild in die Zwischenablage
- Meine Anwendung erkennt dieses nun und speichert das Metafile auf der Festplatte ab:

Code:
procedure ClipboardMetafileTest;
var
  MetaFile: TMetaFile;
begin
  if TNTClipboard.HasFormat(CF_ENHMETAFILE) then
  begin
    MetaFile := TMetaFile.Create;
    TNTClipboard.Open;
    try
      { Parameters get ignored anyway }
      MetaFile.LoadFromClipboardFormat(CF_ENHMETAFILE, 0, CF_PALETTE);
      Report(Format('MMWidth=%d MMHeight=%d', [MetaFile.MMWidth, MetaFile.MMHeight]));
      MetaFile.SaveToFile('C:\Users\Andi\Documents\MetaFileTests\Test6.emf');
    finally
      TNTClipboard.Close;
      FreeAndNil(MetaFile);
    end;
  end;
end;
- Wenn ich das gespeicherte EMF nun wieder in Paint lade, so ist es nur noch 97 * 69 Pixel groß. Die Reduktion entspricht dem Faktor 1.33 was ziemlich genau 96 / 72 (DPI) ist.

Kurzum: Weiß jemand ob das "normal" ist oder gibt es eine Möglichkeit auf die Auflösung des gespeicherten Metafiles einfluß zu nehmen oder sind Metafiles grundsätzlich in 72 DPI?
  Mit Zitat antworten Zitat