Как использовать значок, который является ресурсом в WPF?

У меня есть файл .ico, который встроен в качестве ресурса (действие сборки задано для ресурса). Я пытаюсь создать NotifyIcon. Как я могу ссылаться на свою иконку?

notifyIcon = new NotifyIcon(); notifyIcon.Icon = ?? // my icon file is called MyIcon.ico and is embedded 

Файл значков должен быть добавлен в одну из ваших сборок проекта, а для его действия по созданию должно быть установлено значение Ресурс. После добавления ссылки на сборку вы можете создать NotifyIcon следующим образом:

 System.Windows.Forms.NotifyIcon icon = new System.Windows.Forms.NotifyIcon(); Stream iconStream = Application.GetResourceStream( new Uri( "pack://application:,,,/YourReferencedAssembly;component/YourPossibleSubFolder/YourResourceFile.ico" )).Stream; icon.Icon = new System.Drawing.Icon( iconStream ); 

Обычный шаблон использования должен иметь значок уведомления так же, как значок главного windows. Значок определяется как PNG-файл.

Для этого добавьте изображение в ресурсы проекта, а затем используйте следующее:

 var iconHandle = MyNamespace.Properties.Resources.MyImage.GetHicon(); this.notifyIcon.Icon = System.Drawing.Icon.FromHandle(iconHandle); 

В окне XAML:

  

Ну, вы не хотите использовать ресурсы стиля resx: вы просто вставляете файл ico в свой проект в папку (скажем, «ArtWork») и в свойствах устанавливаете действие сборки на «Ресурсы» …

Затем вы можете ссылаться на него в XAML, используя URI PACK … “pack: // application: ,,, / Artwork / Notify.ico”

См. Здесь: http://msdn.microsoft.com/en-us/library/aa970069.aspx и образец

Если вы хотите быть немного больше … WPF-like, вы должны заглянуть в проект WPF Contrib на CodePlex, у которого есть элемент управления NotifyIcon, который вы можете создать в XAML, и который использует стандартные меню WPF (чтобы вы могли придерживаться «всего» “в меню).

Я создал проект здесь и использовал встроенный ресурс (для сборки было установлено значение Embedded Resource, а не только ресурс). Это решение не работает с ресурсом, но вы можете манипулировать им. Я положил это на OnIntialized (), но ему не нужно туда идти.

 //IconTest = namespace; exclamic.ico = resource System.IO.Stream stream = this.GetType().Assembly.GetManifestResourceStream("IconTest.Resources.exclamic.ico"); if (stream != null) { //Decode the icon from the stream and set the first frame to the BitmapSource BitmapDecoder decoder = IconBitmapDecoder.Create(stream, BitmapCreateOptions.None, BitmapCacheOption.None); BitmapSource source = decoder.Frames[0]; //set the source of your image image.Source = source; } 

Если вы просто ищете простой ответ, я думаю, что это именно то, где MyApp – ваше имя приложения и где это корневое имя пространства имен для вашего приложения. Вы должны использовать синтаксис URI пакета, но не обязательно, чтобы вытащить значок из ваших встроенных ресурсов.

   
  • Android OnClickListener - идентифицировать кнопку
  • Где разместить и как читать файлы ресурсов конфигурации в приложении на основе сервлета?
  • Как найти рабочую папку приложения на основе сервлета для загрузки ресурсов
  • Загрузите простой текстовый файл в Android Studio
  • Interesting Posts
    Давайте будем гением компьютера.