Ich versuche, die Schriftart-DPI-Größe auf dem Ziel-Windows-Rechner herauszufinden und die Schriftart unserer App so zu ändern, dass sie dieselbe Größe aufweist, als wenn der Zielcomputer die gleiche Auflösung wie der Dev-Rechner hätte. (Eine größere Ziel-DPI würde also bedeuten, dass wir unsere Schriften kleiner als zur Entwicklungszeit machen würden).Wie können Sie die entsprechende Schriftgröße berechnen, wenn der Bereitstellungs-PC eine andere Schrift DPI hat?
Ich frage mich, ob es irgendwelche Probleme mit der Lösung unten gibt und speziell, ob LOGPIXELSX = 88 korrekt ist.
Hintergrund
die Größe ich alle Bedienelemente und Schriften auf unseren Formularen die aktuelle Windows-Bildschirmauflösung anzupassen. Wenn jedoch jemand die Font-DPI höher gesetzt hat, müssen wir dies berücksichtigen und die Schriftart kleiner machen (so dass es am Ende die richtige Größe auf dem Bildschirm hat). Unsere Fonts sind schon recht groß (vor allem weil wir sie mit screen res skalieren). Die zusätzliche Größe von der höheren DPI macht den Text zu groß.
Meine Lösung so weit Von dem, was ich sagen kann, wenn wir die GetDeviceCaps wie unten und dann die CurrentFontDPI erhalten und tun dies verwenden: (Ignorieren der Änderung Schriftgröße durch die neue Bildschirmauflösung):
NewFontSize CurrentFontSize = * (DevelopmentDPI/CurrentFontDPI)
Function CurrentFontDPI
Dim hwnd, hDC, logPix, r As Long
Dim LOGPIXELSX=88
hwnd = GetDesktopWindow()
hDC = GetDC(hwnd)
logPix = GetDeviceCaps(hDC,LOGPIXELSX)
r = ReleaseDC(hwnd, hDC)
CurrentFontDPI= logPix
End Function
FYI, ist der obige Code pa rt einer größeren Routine bei "einer damit verbundenen SO-Frage" [1]. Ich den Rest aus dem Code links b/c es mindestens einen Fehler schien (es hatte NewFont = oldFont * (NewDPI-OldDPI), die Sie Nullhöhe Schriftgröße geben würde, wenn die DPI nicht geändert hatte)
[ 1]: http://www.BungalowSoftware.com test
+1 für GetDeviceCaps() (siehe den Link) Ich liebe die Windows-API. –