Ich möchte aus meiner C# Anwendung heraus Power-Point-Präsentationen starten und auf Monitoren verteilen. Dazu wollte ich die Eigenschaften Left, Top, Width und Height von Microsoft.Office.Interop.PowerPoint.SlideShowWindow setzen. Die sind aber wohl nicht in Pixeln angegeben. Ich teste jetzt unter Windows 10. Von jeweils 3 Monitoren ist einer auf Skalierung 125%, die beiden anderen auf Skalierung 100% gestellt. In einer Konfiguration ist zwischen den von mir erwarteten Werten in Pixeln und den vorgefundenen Werten der Faktor 0,75. Nach dem Tausch von 2 Monitoren ist der Faktor 0,6. Wobei der eine nochmal zusätzlich mit dem Faktor 1,25 umgerechnet werden muss, das ist aber nicht das Problem. Woher kommt dieser Umrechnungsfaktor und wie kann ich dessen Wert ermitteln ?
Sehr wahrscheinlich in Twips.
https://www.codeproject.com/Articles/43520/Device-Independent-Units-to-Points-to-Inches Da ist die Antwort. Die Einheit ist PUNKT.
https://docs.microsoft.com/en-us/previous-versions/office/office-12/ff760548(v=office.12) sagt die Einheit sind Points (was auch immer man darunter verstehen soll). Ich denke, du musst die Auflösung des Monitors ermitteln und damit rechnen. merciless
Dirk K. schrieb: > sagt die Einheit sind Points (was auch immer man darunter verstehen > soll) points = punkte. Was man darunter versteht. Siehe mein Link.
Danke schon mal für Eure Erklärungen. Aber es scheint doch komplizierter zu sein, oder ich habe hier noch einen Fehler. Es geht um ein Notebook mit fest eingebauten Display, das auf empfohlene 1920x1080 Pixel mit 125% Skalierung eingestellt ist. Nun stöpsele ich 2 Monitore daran an. Stelle ein, dass sich das Notebookdisplay rechts der beiden Monitore befindet und starte die Präsentation. Durch die vorher in PowerPoint gemachten Einstellungen startet die Präsentation im Vollbildmodus auf dem Notebookdisplay. Wenn ich nun auslese, bekomme ich für Width 1440 und für Height 810. Neuer Tag, neues Glück. Ich verbinde das selbe Notebook anstatt der vorher genutzten mit 2 anderen Monitoren. Stelle ein, dass das Notebookdisplay in der Mitte zwischen den beiden steht, Auflösung und Skalierung lasse ich für das Notebookdisplay gleich. Starte die Präsentation. Durch die vorher in PowerPoint gemachten Einstellungen startet die Präsentation im Vollbildmodus auf dem Notebookdisplay. Wenn ich nun auslese, bekomme ich für Width 1152 und für Height 648. Über GetDpiForWindow(handle) oder das Verhältnis GetDeviceCaps(handle, DESKTOPVERTRES) / GetDeviceCaps(handle, VERTRES) komme ich immer nur auf die 125%.
Dirk K. schrieb: > sagt die Einheit sind Points (was auch immer man darunter verstehen > soll) Das ist eine dieser kranken imperialen Maßeinheiten: https://de.wikipedia.org/wiki/Schriftgrad#DTP-Punkt
FOp schrieb: > Über GetDpiForWindow(handle) oder das Verhältnis GetDeviceCaps(handle, > DESKTOPVERTRES) / GetDeviceCaps(handle, VERTRES) komme ich immer nur auf > die 125%. Du brauchst auch andere Werte. ;) Die 125% geben dir die Skalierungsauflösung an. So wie ich das mit Powerpoint verstehe, ist die Bildschirm-Anzeige EGAL.!!! Ich denke das PP auf die Seitengröße eingestellt ist. Es nennt sich da ja nicht Frames sondern Folie. !!! Die echte Bildschirm-Skalierung übernimmt dann PP selbst. https://docs.microsoft.com/en-us/previous-versions/office/office-12/ff763752(v=office.12) Siehe dazu auch https://docs.microsoft.com/en-us/previous-versions/office/office-12/ff761806(v=office.12) Ich würde also "Ausnahmsweise" die Bildschirmauflösung vergessen, und die Seiten-Einstellung nehmen als Größen-Reference. Ist aber nur eine Idee. Ich nutze interop nur mit Excel. Aber da kann ich es im Schlaf. ;) Also einfach mal testen. ;)
Kleiner Hinweis der vielleicht Sinn macht. In VB benutze ich wenn ich einen Seite bei A4 Normal ausdrucken will die Formel cm = 2.5 von_links = cm * 39 Zur Berechnung des linken Abheftrand. Ist zwar nicht sehr genau aber mir reicht es. Wenn du es genau haben willst musst du Seite Deklarieren durch Format-Auswahl und dann genau_faktor = Pagesize.width / 21.1 machen (A4) Wie gesagt, ich schreibe nur für Standard-A4-Hoch wie es JEDER Deutscher Drucker normal macht.
Was ich letztens hatte, es kann bei Windows vorkommen, das die Auflösung des "Desktops" nicht die ist, was er wirklich ausgibt. Soweit icgh das verstanden habe, liegt das am Display. Wenn bei zwei Monitoren und geklonter Anzeige, einer von beiden die Auflösung nicht kann, so zeigt Windows in der Systemsteuerung trotzdem die gewünschte Auflösung an, gibt das Signal aber in einer Anderen Auflösung aus. Das hatt bei mir zur Folge, das das Video, exakt in Desktopauflöusng auf dem Beamer das falsche Seitenverhältniss hatte und furchtbar aussah. Siehe Win 10: -> Einstellungen -> Anzeige -> "Erweiterte Anzeigeeinstellungen"(ganz unten) Dort gibt es die "Desktopauflösung" und die "Aktive ASignalauflösung" Ich bin mir nicht sicher, ob das zu deinem Thema passt, das war aber eine fiese Stolperstelle. Und jedem ITler dem ich das erzählt habe, hat mich verwundert angeschaut.
Bentschie schrieb: > Und jedem ITler dem ich das erzählt habe, hat > mich verwundert angeschaut. Ich nicht. Ich kenne diese miesen Tricks seit Win 3.11 Siehe oben, mit den Hoch-Format-Monitor. Ich bekam einfach nicht die richtige Info. Wobei mein Verdacht ist, das der Treiber das selbstständig machte.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.