2012-03-30 1 views
0

Odd one, this. Das Projekt, an dem ich arbeite, enthält einige kleine Symbole (.ICO-Dateityp) in einer Windows-Ressource (.rc) -Datei, alle 10x10 sind schwarz auf transparent.Symbole, die in Visual Studio bearbeitet werden können, aber in anderen Editoren leer angezeigt werden

Beim Öffnen dieser Symbole in Visual Studio 2010 wird der Symboleditor korrekt angezeigt. Das Symbol wird in lachsfarbenem Rosa auf grüngrün angezeigt. Die Eigenschaften des Symbols in VS zeigen es als "10x10, 4 Bit, BMP". Die App mit den Symbolen zeigt sie an.

Ich kann sie jedoch nicht in externen Editoren anzeigen oder bearbeiten! Die Miniaturansicht von Windows 7 Explorer ist leer weiß; MS Paint lädt sie auch als 10 x 10 leere weiße Bilder. Paint.Net (mit der .ico plugin) denkt, dass sie 10x10 transparente Bilder sind. Windows-Dateieigenschaften melden sie als 10x10, 32-Bit-Symbole.

Was ist los?

Antwort

1

Ein Symbol enthält 3 verschiedene Bitmaps. Zwei monochrome und in Ihrem Fall eine 4bpp-Bitmap. Die monochromen Bitmaps bestimmen, wie die Pixel angezeigt werden. Einer davon bestimmt, ob ein Pixel transparent ist, er erscheint im Icon-Editor als grüngrün. Der andere bestimmt, ob ein Pixel tatsächlich der Hintergrundpixel ist, der invertiert wird, er erscheint im Icon-Editor als rosa Lachs.

Wenn Sie also nur aquamarin und pink sehen, trägt Ihr 4bpp-Bitmap überhaupt nicht zum sichtbaren Symbol bei. Was auch immer für einen anderen Symbol-Viewer, den Sie verwenden, um das Symbol zu betrachten, ist dadurch ausgelöst. Das ist nicht ungewöhnlich. Invertierende Hintergrundpixel machten nur in den frühen Tagen von Windows Sinn, damals, als die Anzeigen eine sehr begrenzte Anzahl von Farben hatten. Wie 4bpp.

Korrigieren Sie es, indem Sie reale Farben in der 4bpp-Bitmap verwenden. Oder machen Sie sich keine Sorgen, wenn Sie das Symbol immer auf einem bekannten Hintergrund anzeigen. Was übrigens nicht typisch ist, kann der Benutzer beispielsweise die Farbschemaeinstellung für die Titelleiste des Fensters ändern. Oder ändern Sie das Hintergrundbild für den Desktop. Die resultierende Symbolfarbe wird ziemlich zufällig sein.