Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Ownerdraw Komponenten unter HighDPI vergrößern (https://www.delphipraxis.net/200970-ownerdraw-komponenten-unter-highdpi-vergroessern.html)

DieDolly 12. Jun 2019 08:35


Ownerdraw Komponenten unter HighDPI vergrößern
 
Ich stehe gerade auf dem Schlauch. Wie vergrößert man mit MulDiv Komponenten-Höhen die man selber zeichnet, wenn die DPI größer oder gleich 125 ist?

Ist das der richtige Weg?
Delphi-Quellcode:
CB.ItemHeight := MulDiv(CB.ItemHeight, Screen.MonitorFromWindow(Handle).PixelsPerInch, 96);

EWeiss 12. Jun 2019 08:42

AW: Ownerdraw Komponenten unter HighDPI vergrößern
 
Zitat:

Zitat von DieDolly (Beitrag 1434406)
Ich stehe gerade auf dem Schlauch. Wie vergrößert man mit MulDiv Komponenten-Höhen die man selber zeichnet, wenn die DPI größer oder gleich 125 ist?

Ist das der richtige Weg?
Delphi-Quellcode:
CB.ItemHeight := MulDiv(CB.ItemHeight, Screen.MonitorFromWindow(Handle).PixelsPerInch, 96);

Nun ja probieren geht über studieren ;)

gruss

DieDolly 12. Jun 2019 08:45

AW: Ownerdraw Komponenten unter HighDPI vergrößern
 
Das scheint zu funktionieren. Was mich nur stört ist die feste Zahl 96. Sollte ich irgendwann in 10 Jahren zu einem 2K- oder 4K-Bildschirm wechseln könnte das Probleme geben, weil man da bestimmt nicht mit 100% DPI arbeitet. Aber ich sehe gerade die ist in der DFM eingebrannt und kann mit Self.PixelsPerInch abgefragt werden.

EWeiss 12. Jun 2019 08:48

AW: Ownerdraw Komponenten unter HighDPI vergrößern
 
Jo wäre sinnvoller..
Wobei dieser ganze DPI Kram ist nicht ausgereift und das wird sicher noch dauern..

gruss

DieDolly 12. Jun 2019 08:52

AW: Ownerdraw Komponenten unter HighDPI vergrößern
 
Unter Windows 10 und mit 10.3 funktioniert das schon besser. Früher musste ich alles manuell anpassen und pixelgenau ausrichten.
ComboBoxen mit Ownerdraw scheinen aber noch problematisch zu sein.

96 DPI, ComboBox Ownerdraw, 35 Pixel hoch. Verschiebe ich das Form auf einen 125% DPI Monitor, ist die ComboBox etwa 44 Pixel hoch. So soll es sein.
Starte ich das Programm aber auf einem 125% DPI Monitor muss ich erst MulDiv bemühen.

EWeiss 12. Jun 2019 08:59

AW: Ownerdraw Komponenten unter HighDPI vergrößern
 
Zitat:

ComboBoxen mit Ownerdraw scheinen aber noch problematisch zu sein.
Ich behandle das so das ich in meiner Library DPI überhaupt nicht berücksichtige.. muss ich auch nicht weil alle Komponenten auf Sprites aufgebaut sind.
Will der User oder Programmierer eine höhere DPI kann er es selbst von außen steuern in dem er einfach die entsprechende Größe der Bitmap übergibt.

Somit bin ich was meine Bibliothek angeht unabhängig davon.

Am besten wäre wenn ich mein Lib auf Vektorgrafik umstellen würde da diese verlustfrei ist und kein Antialias benötigt um scharfe Kanten zu Zeichen für DPI genau das richtige.
Ist halt keine Rastergraphik die auf Pixeln aufgebaut ist.

Aber bin zu alt um das alles nochmals umzustellen.
Wenn man jedoch mit DPI arbeitet sollte man das unbedingt berücksichtigen, von vornherein, nicht erst dann wenn es zu spät ist ;)

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz