Search code examples
c#.netimageiconsnotifyicon

notifyicon image looks terrible once image ends up in system tray


I am using Visual Studio 2010, C#, on Windows 7.

I have added a notify control to my project and set it to an icon I have imported to the project. The icon image is really good looking if I just preview it, but once I run my code and see it in the system tray, then it's really terrible, like the sides are dotted instead of straight lines and so on. I have tried 16x16, 24x24, 32x32 and 48x48 of the same file but I am having terrible results.

Have I missed anything?

myNotifyIcon.Icon = SysDir.Properties.Resources.icon2_32_ico_rgba;

Solution

  • Edit:

    The info I am linking seems to be suspect at this point. Try it out, but if it isn't working, then I suggest you edit your question to post screenshots of all your experiments (each icon size and how it gets scaled).

    Original:

    32x32x256 is the right size and color depth according to this link:

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

    But you have to be very careful when constructing that image:

    • Take a 16x16x256 image, and get it to look nice
    • Double it to 32x32 (careful not to blur or resample if doing this in a paint program)

    The reason is that Windows will "resize" the 32x32 image to 16x16 by simply throwing away 3/4 of the pixels. The link above demonstrates this phenomenon with a couple screenshots:

    Before:

    Before shrinking icon

    After:

    After shrinking icon

    I'm not sure how much of the color-depth pickyness (256 colors only?)/resampling issues are still true on Windows 7, but it certainly seems to be the case on XP.