2010-06-09 5 views
1

J'ai ce code WPF qui fonctionne ...l'aide d'une icône Windows Forms dans WPF

Uri iconUri = new Uri("pack://application:,,,/media/images/VS.ico", UriKind.RelativeOrAbsolute); 
this.Icon = BitmapFrame.Create(iconUri); 

J'utilise une forme de fenêtres NotifyIcon contrôle dans mon application WPF, et je dois maintenant assing la Icône à elle. Comment puis-je obtenir de mon icône WPF à un System.Drawing.Icon?

Répondre

2

J'utilise la méthode suivante:

// Setup the new NotifyIcon 
System.Windows.Forms.NotifyIcon notifyIcon = new System.Windows.Forms.NotifyIcon(); 
notifyIcon.Text = "Name of Application"; 
notifyIcon.Icon = new System.Drawing.Icon("media/images/VS.ico"); 
notifyIcon.Visible = true; 

Assurez-vous d'ajouter une référence à System.Drawing.

+0

Brent, je ne peux pas voir l'icône de la barre des tâches après l'exécution de votre code bien que cela fonctionne bien. Mon icône est dans une ressource. Peut-être que c'est le problème? ... Uri iconUri = nouvel Uri ("pack: // application:",/media/images/VS.ico ", UriKind.RelativeOrAbsolute); – flobadob

+0

Mon code actuel ressemble à ceci ... private void Window_Loaded (expéditeur d'objet, RoutedEventArgs e) { notifyIcon = new System.Windows.Forms.NotifyIcon(); Uri iconUri = nouvel Uri ("pack: // application:",/media/images/VS.ico ", UriKind.RelativeOrAbsolute); this.Icon = BitmapFrame.Create (iconUri); // cela fonctionne donc l'URI fonctionne bien notifyIcon.Text = "Nom de l'application"; notifyIcon.Icon = nouveau System.Drawing.Icon ("/ media/images/VS.ico"); notifyIcon.Visible = true; // rien affiché dans systray } – flobadob

+0

Eventuellement ... L'icône que j'utilise a une action de construction de Contenu, et je copie l'icône dans le répertoire de sortie. Je mettrai à jour ma réponse ... – Brent

0

Imaging.CreateBitmapSourceFromHBitmap

Je l'utilise comme:

return Imaging.CreateBitmapSourceFromHBitmap(source.GetHbitmap(), IntPtr.Zero, Int32Rect.Empty, BitmapSizeOptions.FromEmptyOptions()); 

où la source est un Bitmap, que vous pouvez obtenir en appelant votre méthode de .ToBitmap()Icon.

+0

Je ne vois nulle part la méthode ToBitmap. De quelle classe est-il membre? Merci. – flobadob

+0

Vous avez accepté l'autre réponse, mais pour être complet, http://msdn.microsoft.com/en-us/library/system.drawing.icon.tobitmap%28v=VS.100%29.aspx. Peut-être que je suis juste confus entre les classes WinForms/WPF Icon. – JustABill