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

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

===============>>#1 票数:101 已采纳

您的图标文件应添加到您的某个项目程序集中,其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 );

===============>>#2 票数:20

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

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

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

在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">

===============>>#3 票数: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菜单(所以你可以坚持“任何东西” “在菜单中)。

===============>>#4 票数:2

如果您只是在寻找简单的答案,我认为这就是MyApp是您的应用程序名称以及应用程序的根命名空间名称。 您必须使用pack URI语法,但从嵌入式资源中提取图标并不一定非常复杂。

    <Window x:Class="MyApp.MainWindow"
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
    mc:Ignorable="d"
    Height="100"
    Width="200"
    Icon="pack://application:,,,/MyApp;component/Resources/small_icon.ico">

===============>>#5 票数:1

我在这里创建了一个项目并使用了嵌入式资源(构建操作设置为嵌入式资源,而不仅仅是资源)。 此解决方案不适用于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;
    }

  ask by ScottG translate from so

未解决问题?本站智能推荐:

1回复

WPF图标和Uri

我正在尝试直接在主目录中的项目中加载一个图标。 为了做到这一点,我这样做: 即使我以相同的方式引用它们的样式,这也根本不起作用: 唯一的区别是我的样式是在application.xaml的MergeDictionary中定义的,就像这样 有人可以解释为什么图像没有显示以
5回复

设置wpf应用程序的图标(VS 08)

在进一步说明之前我会提到我在以下方面尝试了解决方案: 如何在visual studio 2008中为我的应用程序设置图标? 从VS 05中的资源设置应用程序图标 我正在尝试为我的应用程序设置一个图标。 AFAIK,我需要3张图片吗? 1图像是单击.exe(exe
1回复

存储用作WPF应用程序图标的图像的推荐方法是什么?

我正在WPF中创建一个非常标准的业务应用程序。 我需要使用工具栏和菜单项的图标,以及其他一些地方。 我想知道三个(可能是相互关联的)事情的答案: 我应该使用什么格式的图像? ICO? PNG? JPG? GIF? 如何在VS2008项目中存储图像? 作为磁盘上的文
2回复

如何从XAML中的项目属性添加图标

嗨,我想知道是否有可能通过xaml访问项目属性资源。 我需要创建一个menuItem图标,所以通常我会这样做 但是,我想直接从XAML创建相同的图标,而无需使用后面的代码。 这可能吗
7回复

任何简单的方法来使用资源中的图标?

我有一个C#应用。 我需要向该应用添加图标,因此我添加了图标资源。 添加资源很好,但是有什么方法可以在不添加其他代码的情况下将我的(资源)图标用作表单图标? 当我尝试使用表单的设计时“ icon”属性时,似乎必须选择一个文件,但是我想使用嵌入式图标... 有什么帮助吗?
1回复

如何在XAML中引用图标资源文件引用

我想要一个按钮在XAML中显示一个图标。 最初我想要粘贴一个字符,但是vb Express 2008不会将它识别为符号,因为它不是常规字符。 然后我创建了一个图标,并尝试设置按钮图像属性以引用它,但这不存在,所以更多的痛苦。 现在我已经使用项目资源来添加它已经推送到项目资源目录中的图标文件
2回复

从VS 05中的资源设置应用程序图标

我知道我可以在项目的Resources.resx文件中添加一个图标,然后从代码中引用该图标。 如何从资源中设置整个EXE的图标? 我所看到的只是一个浏览另一个文件的地方。 我想使用我的资源中的当前图标文件而不必在我的项目中有重复的文件... 谢谢
1回复

在C ++ CLI中显示本地资源中的图标

我想显示我的图标之一(.ico文件),它们在.resx文件中。 这样它的工作方式与图像,但我无法弄清楚如何使用图标做到这一点。 这样可以显示系统图标: 但是我不能让它像这样工作: 我需要从System::Object到System::Drawing::Icon某种类型的转换吗
2回复

在Visual Studio中向Windows资源添加图标

我试图将图标添加到Visual Studio中内置的.NET exe中,但是以某种方式无法正常工作。 重现此问题的步骤如下:1.我创建了一个新的Windows窗体应用程序应用程序:New Project-> Windows Form Application 2.在其中打开资源:右键单
1回复

使用WIN32 API设置没有资源的程序图标

我正在使用Visual Studio的快速版本。 因此,使用函数调用MAKEINTRESOURCE是不可能的。 我试图通过覆盖getAdditionalClassInfo函数来设置应用程序图标。 有谁知道如何在不使用资源的情况下设置此图标?