AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TeeChart - Zu großer Rand beim EMF-Export

Offene Frage von "SteffenSchm"
Ein Thema von SteffenSchm · begonnen am 28. Jul 2022 · letzter Beitrag vom 2. Aug 2022
Antwort Antwort
hotrs02

Registriert seit: 7. Apr 2022
42 Beiträge
 
#1

AW: TeeChart - Zu großer Rand beim EMF-Export

  Alt 29. Jul 2022, 10:15
Wir hatten ein ähnliches Problem in Zusammenhang mit der Skalierung in Delphi 5. Die Skalierung des primären Monitors beeinflusste die Darstellung, auch wenn die Grafik auf einem anderen Monitor angezeigt wurde.

Ich habe das dann so gelöst, dass ich in einem Thread mittels SetThreadDpiAwarenessContext die DPI Awareness auf per Monitor (V2) stelle, anschließend mittels GetDpiForMonitor die tatsächlichen DPI des primären Monitors ermittle und daraus zwei Skalierungsfaktoren berechne, die letztendlich das Ausgaberechteck skalieren.

Allerdings verwenden wir bei der Erstellung des Metafiles nicht das Rechteck des Diagrams, sondern Abmessungen eines Ausgabebereichs innerhalb eines anderen Metafiles, in der das Diagramm dann mittels StretchDraw ausgegeben wird. Das ganze ist Teil einer auf Metafiles basierenden Druckvorschau.

In Delphi 10 / Delphi 11 wurde diese zusätzliche Skalierung bis auf weiteres wieder entfernt. Allerdings sind unsere Anwendungen bislang auch noch nicht als DPI Aware gekennzeichnet.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.399 Beiträge
 
Delphi 12 Athens
 
#2

AW: TeeChart - Zu großer Rand beim EMF-Export

  Alt 29. Jul 2022, 10:44
Die ersten APIs hatten nur eine DPI, also Die des Hauptmonitors.

Später wurde dann erst hinzugefügt, dass es JE Monitor anders skalieren kann
und zuletzt auch noch Teilweises Skalieren.

Zuerst kamen mehrere DPI, aber die Form nutzt nur jene, wo sie am Meisten drauf ist, also wo jeweils von Höhe und Breite mehr als die Hälfte liegt.
Und Zuletzt ist es so, dass bei Multimonitor jeder Fensterteil einzeln skaliert werden kann, damit die Fensterteile auf beiden Monitoren gleich groß sind.


Aber natürlich muß das erstmal Windows können, also 10+/11 und dann natürlich auch das Programm und dessen Manifest.



Gestern hatten wir bei einem Kollegen den Fall, da war Windows durcheinandergeraten.
Hatte die falsche DPI auf dem flaschen Monitor verwendet.
Dachten erst es liegt am RDP, aber es war lokal schon so falsch.

Kompletter Windowsneustart nicht mehr gemacht (aber leider im RDP schon alles geschlossen), da es dann schon reichte den Hauptmonitor mal kurz zu ändern und danach stimmte es wieder.
Wir hatten früher im RDP öfters schon andere Probleme, welche erst bei einem Serverneustart, oder zumindestens nach Abmeldung (nicht Trennen) des Nutzers, wieder richtig waren.



Ein kleines Surface auf HighDPI mit 200% an zwei großen FullHD mit 100%.
Der eine Monitor war der Hauptbildschirm, aber auf ihm war plötzlich ALLES doppelt so groß, bis auf ein Programm, was kein HighDPI konnte und bei 200% größtenteils nur noch halb so groß aussah.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (29. Jul 2022 um 13:40 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz