AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Ownerdraw Komponenten unter HighDPI vergrößern

Ownerdraw Komponenten unter HighDPI vergrößern

Ein Thema von DieDolly · begonnen am 12. Jun 2019 · letzter Beitrag vom 12. Jun 2019
Antwort Antwort
DieDolly

Registriert seit: 22. Jun 2018
2.173 Beiträge
 
#1

Ownerdraw Komponenten unter HighDPI vergrößern

  Alt 12. Jun 2019, 09:35
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?
CB.ItemHeight := MulDiv(CB.ItemHeight, Screen.MonitorFromWindow(Handle).PixelsPerInch, 96);
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#2

AW: Ownerdraw Komponenten unter HighDPI vergrößern

  Alt 12. Jun 2019, 09:42
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?
CB.ItemHeight := MulDiv(CB.ItemHeight, Screen.MonitorFromWindow(Handle).PixelsPerInch, 96);
Nun ja probieren geht über studieren

gruss
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.173 Beiträge
 
#3

AW: Ownerdraw Komponenten unter HighDPI vergrößern

  Alt 12. Jun 2019, 09:45
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.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#4

AW: Ownerdraw Komponenten unter HighDPI vergrößern

  Alt 12. Jun 2019, 09:48
Jo wäre sinnvoller..
Wobei dieser ganze DPI Kram ist nicht ausgereift und das wird sicher noch dauern..

gruss
  Mit Zitat antworten Zitat
DieDolly

Registriert seit: 22. Jun 2018
2.173 Beiträge
 
#5

AW: Ownerdraw Komponenten unter HighDPI vergrößern

  Alt 12. Jun 2019, 09:52
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.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#6

AW: Ownerdraw Komponenten unter HighDPI vergrößern

  Alt 12. Jun 2019, 09:59
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

Geändert von EWeiss (12. Jun 2019 um 10:11 Uhr)
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 12:29 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