Ein Canvas hat ein DPI, egal wo es ist ... hier muß also jemand die DPI / Größe des Canvas anpassen, wenn es auf einen anderen Monitor verschoben wird.
Unaware : Anwendung malt mit fester DPI und Windows skaliert das Fenster du mußt garnichts beachten()
System : Anwendung nimmt die DPI vom primären Monitor, zum Programmstart / Windowslogin (und vielleicht skaliert Windows das Fenster, auf den anderen Monitoren)
Per-Monitor / Per-Monitor V2 : Die Anwendung nimmt die DPI von dem Monitor, auf der das Fenster zu über 50% (width&height) drauf ist
und Windows macht garnichts, weil Anwendung sagte ja es macht das selber ... macht es das nicht (richtig), dann Pech.
Zitat:
Most UI frameworks used by desktop applications (Windows common controls (comctl32), Windows Forms, Windows Presentation Framework, etc.) do not support automatic DPI scaling, requiring developers to resize and reposition the contents of their windows themselves.
Jemand muß also auf WM_DPICHANGED hören und dann die DPI und Größe/Position der Fenster/
DC/Canvas selber anpassen.
Von den
VCL-Standardcontrols
erwarte erhoffe ich mir zwar von Delphi, dass es die DPI anpasst und ein Repaint des Canvas auslöst, aber gerade bei selbstgemaltem Zeugs mußt du natürlich aufpassen, denn wann hatte mal was funktioniert, was von Delphi kommt?
Frage: Wird WM_DPICHANGED durhc Windows auch gesendet, wenn das Fenster den Monitor wechselt, oder muß man darauf auch selber reagieren?