Die Angabe DPI von einem GDI-Gerätekontext

Ich habe eine Anwendung, die generiert metafiles (EMF). Es verwendet das Referenz-Gerät (aka dem Bildschirm), um diese Metadateien, also die DPI der Metadatei ändert sich abhängig davon, auf welcher Maschine der code ausgeführt wird.

Let ' s sagen, mein code ist beabsichtigt, erstellen Sie eine Metadatei, 8.5 x 11 in. Mit meiner Entwicklung workstation als Referenz, dass ich am Ende mit einem EMF hat

  • eine rclFrame von { 0, 0, 21590, 27940 } (Abmessungen der Metadatei in Tausendstel mm)
  • eine szlDevice von { 1440, 900 } (Abmessungen des Referenz-Gerät (in Pixeln)
  • eine szlMillimeters von { 416, 260 } (Abmessungen der Referenz-Gerät in mm)

Okay, also die rclFrame sagt mir, dass die Größe des EMF-sollte

  • 21590 /2540 = 8.5 in weiten
  • 27940 /2540 = 11 in groß

Richtig auf. Mithilfe dieser Informationen können wir bestimmen die physikalische DPI von meinem monitor, auch, wenn mein Mathe richtig ist:

  • (1440 * 25.4) /416 = 87.9231 horizontale dpi
  • (900 * 25.4) /260 = 87.9231 vertikale dpi

Das problem

Alles, spielt dieser Metadatei-ein EMF-zu-PDF-Konvertierung, die Seite "Zusammenfassung" wenn Sie mit der rechten Maustaste auf die EMF im Windows-Explorer, etc--scheint zum abschneiden der berechneten DPI-Wert der Anzeige 87 statt 87.9231 (sogar 88 wäre in Ordnung).

Diese Ergebnisse in eine Seite, ist physisch sortiert als 8.48 in x 10.98 in (mit 87 dpi) anstelle von 8,5 x 11 in (mit 88 dpi), wenn die Metadatei wiedergegeben wird.

  • Ist es möglich, ändern Sie den DPI-Wert des Referenz-Gerät so, dass die Informationen in der Metadatei gespeichert werden verwendet, um die Berechnung der DPI kommt zu einem schönen integer?
  • Kann ich meine eigenen Gerätekontext, und geben Sie den DPI? Oder muss ich wirklich haben, um zu verwenden, einen Drucker zu tun?

Vielen Dank für jede Einsicht.

  • Ist die Größe auf der Seite "Zusammenfassung" angezeigt, richtig? Ist es 748x968 oder 747x967?
  • mit der Mathematik gelegt, die Sie wie in dieser Frage - ist von unschätzbarem Wert für mich
Schreibe einen Kommentar