2 Stimmen

Verzerrte Systemablage-Symbole

Ich habe eine kleine Anwendung für die Taskleiste geschrieben, die eine NotifyIcon um den Status eines Prozesses anzuzeigen. Ich lade ein hochwertiges 64 x 64 png-formatiertes Symbol auf die folgende Weise:

Bitmap rawImage = new Bitmap(Assembly.GetExecutingAssembly().GetManifestResourceStream("Snitch.Icons.Loading.png"));
m_icon.Icon = Icon.FromHandle(rawImage.GetHicon());  

Das Symbol, das in der Taskleiste erscheint, sieht jedoch nie so gut aus wie mein Quellensymbol. Gibt es eine Einstellung oder etwas, das ich übersehe? Ich habe die 16x16, 32x32 Acht-Bit-Symboldateien ausprobiert, die VS2008 erstellt, aber sie scheinen nicht besser zu sein.

2voto

stuartd Punkte 65785

I Formularobjekt Ihrer Anwendung hinzufügen, dann zeigt Ihre Anwendung ein Symbol im Tray-Bereich der Taskleiste angezeigt. Die gerenderte Größe des NotifyIcons ist ist die gleiche wie für die Symbole der Controlbox und Taskleistensymbole: 16x16 Pixel, möglicherweise gestreckt, um die Höhe der die Höhe der Taskleiste anzupassen, die die von der Höhe der Taskleiste abhängig ist Taskleiste abhängt. Seltsamerweise verwendet Windows jedoch nicht die 16x16x256-Bitmap für diese Situation verwendet, sondern standardmäßig die 32x32x256 Bitmap und verkleinert sie auf die auf die erforderliche Größe. Ich kann mir keinen besonders guten Grund für diesen Unterschied - die Verwendung der 32x32 Version für das Benachrichtigungssymbol, aber 16x16 für die Taskleiste und das Kontrollkästchen--aber das es ist so.

http://www.hhhh.org/cloister/csharp/icons/

Hinweis: Der Artikel stammt aus dem Jahr 2003.

1voto

Aaronaught Punkte 118136

Stellen Sie sich die Qualität eines Miniaturbildes im Vergleich zu einem Foto in voller Größe vor; stellen Sie sich nun vor, Sie würden das gesamte Foto auf 16x16 Pixel verkleinern. Je größer die Diskrepanz zwischen der Originalgröße und der neuen Größe ist, desto schlechter sieht das Ergebnis aus, unabhängig davon, ob Sie es verkleinern oder strecken.

Am besten besorgen Sie sich, wenn möglich, eine .ico-Datei, die separate 16x16-, 32x32-, 48x48- und 64x64-Symbole enthält. Die nächstbeste Lösung ist wahrscheinlich die Verwendung eines einfachen 16x16-Symbols für den Infobereich. Jede Größenänderung/jedes Resampling eines Bildes wird verzerrt aussehen.

Es gibt eine Reihe von Websites, die kostenlose oder kostengünstige Downloads von Symbolen in mehreren Größen oder 16x16 anbieten. Hier gibt es bereits mehrere Fragen zu wo man Icons findet Ich werde also nicht versuchen, selbst eine Liste von Websites zu erstellen.

1voto

MrSparkly Punkte 601

Ich sehe auch verzerrte Symbole in der Taskleiste, und ich habe das Problem auf die DPI-Einstellung von Win zurückgeführt. In meinem Fall ist es 115 statt 100. In der Taskleiste wird ein 16x16-Symbol in Wirklichkeit als 18x18-Symbol angezeigt. Die Zahl ergibt sich aus dieser Gleichung:

iconSize= (int) (16* (115/100))= int (18.4) = 18

Das 18x18-Symbol sieht hässlich aus, weil Win ein 16x16-Symbol nimmt und ein paar Pixelzeilen und -spalten "klont", um es an die neue Größe anzupassen. Ich habe versucht, Win ein benutzerdefiniertes 18x18-Symbol zur Verfügung zu stellen, aber Win zeigt es nicht in der Taskleiste an, so wie es ist. Es wird primero die Icon-Bitmap auf die nächstliegende Potenz von 2 (16x16) zwingen und dann für die Anzeige durch Pixelklonen auf 18x18 strecken (mit den zu erwartenden Artefakten). Abgesehen von der Änderung Ihrer DPI, sehe ich keine Workarounds, weil wir keine Kontrolle über die erzwungene, zwischen "Power-of-2" Schritt haben.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X