2013-09-20 3 views
1

Следуя этому руководству: http://www.hhhh.org/cloister/csharp/icons/ Я смог получить свой NotifyIcon, чтобы посмотреть, как это должно быть, потому что Windows решает использовать значок 32x32 и масштабировать его до 16x16 вместо того, чтобы просто использовать значок 16x16.NotifyIcon и High DPI Displays

Это, как говорится, у меня есть файл .ico со следующими разрешениями:

  • 256x256x32
  • 64x64x32
  • 48x48x32
  • 32x32x32
  • 16x16x32
  • 48x48x8
  • 32x32x8
  • 16x16x8
  • 32x32x4
  • 16x16x4

Однако, когда я увеличиваю настройки DPI на моем экране, значок отображается в NotifyIcon более высокая версия разрешения, с большим количеством украшений, которые в конечном итоге выглядит ужасно масштабируется к размеру NotifyIcon. Какой значок размера он принимает и масштабируется сейчас? Было бы лучше, если бы я просто создал простой значок каждого размера специально для NotifyIcon?

ответ

0

Значки, отображаемые в области уведомлений, представляют собой небольшие значки. Это их размер задается метрикой системы SM_CXSMICON. Узнайте об этом размере и поставьте значок точных размеров, чтобы избежать наложения псевдонимов. Если у вас нет точного размера, вероятно, самое лучшее, что вы можете сделать, это нарисовать ближайший значок меньшего размера на середине прозрачного прозрачного холста и использовать его.

Возможно, вы не сможете сделать это, используя управляемую обертку NotifyIcon. Я ожидаю, что вы не получите достаточного контроля. Процедура, которую я описываю, действительно требует, чтобы вы могли вызвать Shell_NotifyIcon, собственный API и передать HICON.

0

Эта страница http://msdn.microsoft.com/en-us/library/bb773352(VS.85).aspx дает пример того, как передать правильный значок для правильного DPI. Он использует LoadIconMetric, который, вероятно, напрямую не доступен в C#, но было бы просто его маршалировать.

Смежные вопросы