Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Verzerrtes Programm-Icon in der Taskleiste und im Programmfenster (https://www.delphipraxis.net/191251-verzerrtes-programm-icon-der-taskleiste-und-im-programmfenster.html)

EWeiss 30. Dez 2016 17:51

AW: Verzerrtes Programm-Icon in der Taskleiste und im Programmfenster
 
Wie sieht es denn aus wenn du das 16x16 einfach mal aus der Ressource entfernst?
Mit der Änderung der DPI hab ich noch nicht gearbeitet.. sorry
Habe immer 100%

gruss

Tahtu 30. Dez 2016 18:32

AW: Verzerrtes Programm-Icon in der Taskleiste und im Programmfenster
 
Zitat:

Zitat von EWeiss (Beitrag 1357592)
Wie sieht es denn aus wenn du das 16x16 einfach mal aus der Ressource entfernst?

Äh... was sollte dabei rauskommen?

Der Explorer wird immernoch ein Icon skalieren - und vermutlich immer noch das 48x48 Icon.

Zitat:

Zitat von EWeiss (Beitrag 1357592)
Mit der Änderung der DPI hab ich noch nicht gearbeitet..

Neulich hatte ich einen Anwender, der mit 250 % DPI arbeitet, weil sein Monitor so hochauflösend ist. Ohne etwas in meinem Programm zu machen, bekommt er eine unscharfe Anzeige. Also habe ich in meinem Programm die "DPI aware" Richtlinien von MS umgesetzt. Dazu gehört, dass ich alle Grafiken selbst bei der Anzeige skalieren muss.

Um das zu machen speichere ich die Grafiken in einer höheren Auflösung und skaliere diese beim Programmstart / bei der Anzeige entsprechend den DPI Einstellungen des Benutzers.

Die selbstgezeichneten Grafiken (ein Diagramm) habe ich entsprechend umgeschrieben.

Ich glaube, dass es immer mehr Monitore geben wird, die deutlich mehr als 96 DPI haben - und entsprechend der Benutzer mehr als 100% DPI in Windows einstellt. Daher sollte aus meiner Sicht jedes Programm die Grafiken entsprechend skalieren.

EWeiss 30. Dez 2016 18:44

AW: Verzerrtes Programm-Icon in der Taskleiste und im Programmfenster
 
Zitat:

Dazu gehört, dass ich alle Grafiken selbst bei der Anzeige skalieren muss.
Du hast aber schon das dazugehörige Manifest ins Projekt kompiliert. Oder?

Zitat:

Äh... was sollte dabei rauskommen?
Es wird dann ein anderes Format kompiliert.
Bei mir sieht es zumindest nicht schlecht aus.

Siehe Anhang..
DPI 110%, Klassik Ansicht

TaskLeiste und Explorer..

gruss

Tahtu 30. Dez 2016 18:53

AW: Verzerrtes Programm-Icon in der Taskleiste und im Programmfenster
 
Zitat:

Zitat von EWeiss (Beitrag 1357597)
Du hast aber schon das dazugehörige Manifest ins Projekt kompiliert. Oder?

Ja, in der .rc Datei.

Zitat:

Zitat von EWeiss (Beitrag 1357597)
Bei mir sieht es zumindest nicht schlecht aus.

Bei mir sieht es (jetzt) genauso aus, soweit ich das erkenne: In der Taskzeile komplett scharf, im Explorer recht gut.

EWeiss 30. Dez 2016 18:56

AW: Verzerrtes Programm-Icon in der Taskleiste und im Programmfenster
 
Zitat:

Bei mir sieht es (jetzt) genauso aus, soweit ich das erkenne.
Dann sollte es eigentlich in Ordnung sein.

Zitat:

Ja, in der .rc Datei.
Nicht das wir uns falsch verstehen.
Ich meine nicht die Icons sondern den DPI Kram.

Merke die DPI wird nicht Automatisch skaliert bei normalen Anwendungen das musst du explicit angeben.
Ausgenommen davon ist WPF!

Hier mein Test Example mit Source.. D2010.

gruss

Luckie 30. Dez 2016 18:58

AW: Verzerrtes Programm-Icon in der Taskleiste und im Programmfenster
 
Welcher Tipp war es denn jetzt genau?

Tahtu 30. Dez 2016 19:10

AW: Verzerrtes Programm-Icon in der Taskleiste und im Programmfenster
 
Zitat:

Zitat von EWeiss (Beitrag 1357600)
Dann sollte es eigentlich in Ordnung sein.

Danke, JA!

Zitat:

Zitat von EWeiss (Beitrag 1357600)
Ich meine nicht die Icons sondern den DPI Kram.

Ich glaube, das ist dieser Teil der .manifest Datei:
Code:
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>
Zitat:

Zitat von EWeiss (Beitrag 1357600)
Merke die DPI wird nicht Automatisch skaliert bei normalen Anwendungen

Ohne ein Hinweis in der .manifest Datei geht Windows davon aus, dass das Programm nicht skaliert - und übernimmt die Skalierung für das Programm.

Das Programm selbst generiert dabei 96 (100%) DPI - sowohl für Grafiken, als auch für Schrift. Windows skaliert das dann auf die DPI Einstellungen von Windows. Dabei werden Schrift und Grafik also hochgerechnet - aber durch die höhere Auflösung bleibt es bei der selben Größe auf dem Bildschirm (gemessen in cm). Aber natürlich unscharf.

Mit dem Eintrag in der .manifest Datei muss das Programm die Ausgabe entsprechend der Windows DPI Einstellung bereitstellen, die dann direkt auf dem Bildschirm angezeigt wird.

Hier erfolgt die Skalierung also im Programm. Z. B. verwende ich in meinem Diagrammen immer ein feste Anzahl von Pixel pro Linie. Oft 1, teilweise 2 und selten 3 Pixel - je nach Windows DPI Einstellung (Screen.PixelsPerInch).

Dadurch sehen auch (alte) Programme ohne entsprechenden .manifest Eintrag immer noch ähnlich aus, aber halt unscharf.

Falls dich das nächer interessiert bei Microsoft unter "DPIaware" googlen. Bei www.helpandmanual.com gibts gute PDFs zu dem Thema. Falls du möchtest, such ich dir die Infos...

Zitat:

Zitat von Luckie (Beitrag 1357601)
Welcher Tipp war es denn jetzt genau?

Ich hatte folgende Zeile in meinem .dpr (noch von vor ca. 10 Jahren, damals unter Delphi 7):
Code:
Application.Icon.Handle := LoadImage(hInstance, 'MAINICON', IMAGE_ICON, Application.Icon.Height, Application.Icon.Height, LR_DEFAULTCOLOR);
Daher wurde das 32x32 Icon verwendet. Mein Fehler... :oops:

EWeiss 30. Dez 2016 19:17

AW: Verzerrtes Programm-Icon in der Taskleiste und im Programmfenster
 
habe dir mal mein Sample hochgeladen..

Zitat:

Ich glaube, das ist dieser Teil der .manifest Datei:
yep. ;)

Delphi-Quellcode:
  <!-- Indicates that the application is DPI-aware and will not be automatically scaled by Windows at higher
       DPIs. Windows Presentation Foundation (WPF) applications are automatically DPI-aware and do not need
       to opt in. Windows Forms applications targeting .NET Framework 4.6 that opt into this setting, should
       also set the 'EnableWindowsFormsHighDpiAutoResizing' setting to 'true' in their app.config. -->

  <application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings>
      <dpiAware xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">true</dpiAware>
    </windowsSettings>
  </application>
gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:34 Uhr.
Seite 3 von 3     123   

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