如何使用WPF中的资源图标?

Sco*_*ttG 67 wpf resources icons

我有一个嵌入了资源的.ico文件(构建操作设置为资源).我正在尝试创建一个NotifyIcon.我如何参考我的图标?

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

use*_*125 102

您的图标文件应添加到您的某个项目程序集中,其Build Action应设置为Resource.添加对程序集的引用后,可以像这样创建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 );
Run Code Online (Sandbox Code Playgroud)

  • 创建图标后,请不要忘记处理iconStream. (12认同)

Tho*_*att 20

常见的使用模式是使通知图标与主窗口的图标相同.该图标被定义为PNG文件.

为此,请将图像添加到项目的资源中,然后按如下方式使用:

var iconHandle  = MyNamespace.Properties.Resources.MyImage.GetHicon();
this.notifyIcon.Icon = System.Drawing.Icon.FromHandle(iconHandle);
Run Code Online (Sandbox Code Playgroud)

在XAML窗口中:

<Window x:Class="MyNamespace.Window1"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:local="clr-namespace:Seahorse"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="600"
Icon="images\MyImage.png">
Run Code Online (Sandbox Code Playgroud)

  • 请注意,您应该使用Resources设计器添加图标,然后将构建操作设置为Resource以使其生效. (4认同)

Jay*_*kul 12

好吧,您不想使用resx样式资源:您只需将项目中的ico文件粘贴到文件夹中(例如"ArtWork"),然后在属性中将Build Action设置为"Resources"...

然后你可以使用PACK URI在XAML中引用它..."pack:// application:,,,/Artwork/Notify.ico"

请看这里:http://msdn.microsoft.com/en-us/library/aa970069.aspx样本

如果你想要更多......类似WPF,你应该查看CodePlex上的WPF Contrib项目,它有一个NotifyIcon控件,你可以在XAML中创建并使用标准的WPF菜单(所以你可以坚持"任何东西" "在菜单中).