Konvertieren Pixel zu Zoll und Umgekehrt in C#
Ich bin auf der Suche zu konvertieren pixes in Zoll und Umgekehrt. Ich verstehe, dass ich brauche DPI, aber ich bin nicht sicher, wie diese Informationen zu erhalten (z.B. ich habe nicht die Graphics
Objekt, so dass nicht eine option).
Gibt es eine Möglichkeit?
- DPI, was? Bildschirm? Drucker? ...?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Auf einem video-Gerät, eine Antwort auf diese Frage ist in der Regel nicht sehr genau. Das einfachste Beispiel, um zu verwenden, um zu sehen, warum dies der Fall ist, ist ein Projektor. Die Ausgabe-Auflösung ist, sagen wir, 1024x768, aber der DPI-Wert variiert je nach, wie weit der Bildschirm vom Projektor apeture. WPF, zum Beispiel, geht immer von 96 DPI auf einem video-Gerät.
Vorausgesetzt, dass Sie noch eine Antwort benötigen, unabhängig von der Genauigkeit, und Sie nicht über ein Graphics-Objekt erstellen, können Sie einem aus dem Bildschirm mit einigen P/Invoke und die Antwort bekommen von ihm.
Gibt es physikalisch keine wirkliche Möglichkeit, ohne zu wissen, die DPI. Pixel diskret sind, Zoll nicht, wenn du redest Zoll auf Ihrem monitor, müssen Sie wissen, (zumindest) die Auflösung (pixel aspect ratio) und die Größe des sichtbaren Bildschirmbereich, um berechnen Sie Ihre DPI. Die Auflösung ist in der Regel möglich zu Holen, irgendwo (ich bin kein C# - oder .NET-Programmierer, daher kann ich dir nicht helfen), aber die Größe des Monitors ist in der Regel nicht zur Verfügung. Wenn eine Schätzung ist gut genug, dann haben Sie den Benutzer und geben Sie die Größe des Bildschirms (D. H. 21" oder was auch immer) und lösen für DPI:
geben (vorausgesetzt, Sie wissen, die Diagonale und die Auflösung)
Dies ist nur eine Schätzung, da Monitore sind nie genau 21" (.. oder was auch immer), und das pixel-Seitenverhältnis ist kaum je genau 1:1.
Wenn du redest Zoll auf dem Papier, dann, natürlich, müssen Sie wissen, die DPI des Druckers (oder, genauer gesagt, den aktuellen Drucker-Einstellungen).
Können Sie erstellen, die das Graphics-Objekt, indem Sie einfach aufrufen
this.CreateGraphics()
(oder generellControl.CreateGraphics()
) und dann mit der DpiX und DpiY Eigenschaften, wie Sie zu wissen scheinen. Denken Sie nur daran, Sie zu entsorgen das graphics-Objekt nach der Erstellung (idealerweise mit einer Using-Anweisung).Wenn du nicht mit WinForms, dann lassen Sie es uns bitte wissen, welche Art von Anwendung es ist.
Graphic
scheint stark implizieren WinForms. Vielen Dank für den down-vote, sowieso.