Hallo,
Du schreibst zu meinem Lieblingsthema ;-) Leider mißverständlich.
R.Kantas schrieb:
> Ein paar Worte zum Zusammenhang zwischen DPI, Twips & Co.:
>
> DPI ist eine unveränderliche Hardwaregröße und gibt an, wieviele Pixel
> pro Längeneinheit die Ausgabe-Device realisieren kann. Früher waren das
> am Bildschirm üblicherweise 96 dots/inch. Ein Inch sind ca. 2,54 cm.
>
Ok.
> Dir Längeneinheiten für die Programmierung wurden dagegen
> hardwareunabhängig als Twips definiert, sodaß die Software mit
> Koordinaten in Twips rechnen kann und der jeweilige Ausgabetreiber diese
> über das Verhältnis TwipsPerPixelX bzw. ..Y in Pixel umrechnet.
>
Ja.
> Kann die Ausgabedevice also z.B. 96 DPI, dann sind 96 dots/inch * 15
> Twips/dot = 1440 Twips/inch.
>
Das erweckt eine falschen Eindruck. Auch bei einem Monitor mit 200 dpi
sind 1440 Twips ein Inch. Die Monitorauflösung hat damit nichts zu tun
und ändert auch nichts. Die Twips sind nämlich so definiert: 1 TWIP = 1
zwanzigstel eines Pica, wobei ein Pica = 1/72 inch. TWIP ist AFAIR auch
ein Akronym von "Twentieth Pica".
Allerdings handelt es sich dabei um logische inch, also zB 1440 Twip = 1
logischer inch. Physisch werden sie erst bei der Ausgabe auf dem Monitor
durch die Umrechnung zu Pixelzahl mithilfe der angegebenen
Monitorauflösung, die üblicherweise in DPI (dots per inch) angegeben
wird. Wenn die Monitorauflösung allerdings nicht richtig angegeben
wurde, also nicht den Tatsachen entspricht, dann wird logischerweise aus
1440 Twip = 1 logischem inch nicht 1 physicher inch.
> In VB läßt sich der Zusammenhang z.B. mit der LINE-Funktion
> visualisieren, wenn man eine Linie Twip für Twip neben der anderen
> zeichnet und sieht, daß die Liniendicke nicht kontinuierlich wächst,
> sondern nach jeweils 15 Linien um ein Pixel breiter wird.
>
> Die von Windows so genannte "Vergrößerung" des DPI-Wertes -
> standardmäßig 96 DPI, "Größere Skalierung" 120 DPI - ist irreführend, da
> ja nicht der DPI-Wert vergrößert werden kann, sondern lediglich größere
> Elemente ausgegeben werden: Gemeint ist, ist daß Windows lediglich um
> 25% größere Schriften (und andere Elemente entsprechend vergrößert)
> ausgibt, so daß dort, wo bisher z.B. 96 Pixel angesteuert wurden, jetzt
> eben 120 benötigt werden.
>
Na ja, irreführend ist nur die Benennung des Vorganges
(Schriftgrößenänderung) durch Microsoft, nicht der Vorgang an sich. Ein
für allemal: mit der Angabe der Auflösung in dpi teilt man Windows die
physische Auflösung des Monitors mit. Bis dato ist das AFAIK leider die
einzige Möglichkeit, dies zu tun, zB kann Windows nicht einfach den
Monitor fragen.
Deshalb braucht man sich nicht wundern, wenn man für einen Monitor mit
zB physischen 96 dpi Windows mitteilt, daß dieser zB 120 dpi hätte, daß
dann einiges schief läuft.
> Dieses Verhalten von Windows, einfach nur größere Schriften anzuwenden,
> ändert aber natürlich weder die hardwarebedingten DPI noch den
> Umrechnungsmaßstab Twips pro Pixel, weshalb auch nach der Einstellung
> größerer 'DPI'-Werte beide noch genau so groß sind wie vorher.
> ...
Der Umrechnungsfaktor für die Umrechnung Twips nach Pixel ändert sich
sehr wohl. Allerdings können neuere Betriebssystem (ab Vista) hier
lügen, und unter bestimmten Voraussetzungen einem Programm einfach
andere Werte vorgaukeln.
Also als Faustregel: der DPI-Wert soll mit dem tatsächlichen Monitorwert
übereinstimmen.
Woher kommt dann der üblicherweise damit verbundene Wirrwarr und die
Probleme? Nun, die Probleme beginnen, wenn der User, vielleicht weil er
nicht mehr zwanzig ist und keine Adleraugen hat, möchte, daß ein zum
Betriebssystem gehörendes Programm oder ein anderes Programm das GUI
bzw. GUI-Elemente und die Schrift größer darstellen soll.
Für Windows kann man für diverse "Plätze" (wie Menus,
Schaltflächenbeschriftungen, etc pp), an denen Schrift verwendet wird,
Schriftgrößen vorgeben. Ebenso kann man die Breiten/Höhen diverser
GUI-Elemente global vorgeben (zB Scrolleisten, etc). Alle
Microsoft-Programme und alle anderen Anwendungsprogramme sollten sich
daran halten.
Der Wirrwarr kommt daher, daß sich zum einen eben nicht alle Programme
(inklusive der von Microsoft) an obige Vorgaben halten. Zudem ist leider
auch nicht für alle Arten von GUI-Elementen eine Einstellmöglichkeit
vorhanden.
Deshalb greift der User (notgedrungen) oft zu der Möglichkeit, die
Monitoraufösung falsch anzugeben. Verführt dazu wird er auch durch die
im relevanten Einstellungsdiaolog verwendete irreführende Beschreibung
von Microsoft, die suggeriert, hier könnte man global das System
anweisen, nur die *Schriften* (Stichwort ist hier "Einstellung große
Schriftarten") zu vergrößern.
Bei meinem XP SP3 steht nun immerhin im Dialog "Eigenschaften von xyz
Monitor", Reiter "Allgemein", Feld "Anzeige":
"Der DPI-Wert kann als Kompensierung vergrößert werden, wenn Elemente
bei der aktuellen Bildschirmauflösung zu klein angezeigt werden. Klicken
Sie auf "Abbrechen" und wechseln Sie zur Registerkarte "Darstellung", um
nur den Schriftgrad zu ändern."
Und drunter ist dann eine Ausklappliste mit der Beschriftung
"DPI-Einstellung". Also der Text ist schon um Längen besser als das, was
hier unter W2K und früher stand, läßt aber an Deutlichkeit immer noch
einiges vermissen.
Vollends klar werden, was man hier einstellt, sollte es einem werden,
wenn man "benutzerdefinierte Einstellung" wählt. Dann bekommt man
nämlich ein Bildschirmlineal präsentiert, mithilfe dessen man die realen
DPI *messen* kann!
--
Ulrich Korndoerfer
VB tips, helpers, solutions ->
http://www.prosource.de/Downloads/
MS Newsgruppen Alternativen ->
http://www.prosource.de/ms-ng-umzug.html