Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   auf gerenderte Skalierung von Windows reagieren (https://www.delphipraxis.net/173101-auf-gerenderte-skalierung-von-windows-reagieren.html)

BerndS 7. Feb 2013 11:07

auf gerenderte Skalierung von Windows reagieren
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Seit Vista gibt es ja die Möglichkeit, dass die Fenster skaliert werden, ohne dass die Anwendung was davon "merkt" (z.B. 150% ohne den Haken DPI-Salierung um Stil von Windows XP verwenden).

Die Fenster werden dann vom System auf 150% gerendert.
Windows eigene Fenster und andere einige Anwendungen (z.B. IE) machen das aber nicht und werden scharf ungerendert dargestellt.

Bei der Vorschau vom Quickreport kommt es aber zu Problemen, da hier die Darstellung den Metafiles den Report um den Faktor 96/144 verkleinert im Vorschaubild darstellt (Siehe Anhang).

Mich würde jetzt interessieren, ob man diese Scalierung für den Canval abschalten kann, um den Inhalt scharf darzustellen?
Gruß Bernd

BerndS 14. Feb 2013 14:50

AW: auf gerenderte Skalierung von Windows reagieren
 
Hallo,
nach etwas suchen habe ich nun die Lösung gefunden.
Das Manifest der Anwendung muss noch um folgendes erweitert werden:
Code:
...
  <application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
    </windowsSettings>
  </application>
</assembly>
Da das mit dem zurzeit verwendeten Delphi2007 nicht automatisch geht, wenn Laufzeit-Themes aktivieren eingeschaltet ist,
(der IDE Experte ResEd 1.6.7 Editor kann das möglicher weise)
wird das bestehende Manifest per Build-Post Ereignis anschließend noch erweitert.
Dazu habe ich ein kleine Konsolenanwendung gemacht, die das Manifest extrahiert, die Zeilen einfügt und dann per mt.exe (...\Microsoft SDKs\Windows\v7.0A\Bin ) die Resource zurückschreibt.

Gruß Bernd


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:01 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