微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Windows从多图标文件中select错误的图标,并自我渲染以更正大小

我有一个embedded了5个图标大小的.ico文件,用作主应用程序图标和系统托盘图标。

当它显示在任务栏中时,图标使用所需的16×16格式。 当通知区域/系统托盘中出现图标时,它将使用32×32格式,Windows会将其呈现为16×16的图标,这看起来很可怕。

如何强制窗口在通知区域使用16×16图标大小? 这是我的代码把图标放在系统托盘中:

ContextMenu cmNotify = new ContextMenu(); MenuItem miNotify = new MenuItem(Properties.Resources.Notify_Text); miNotify.DefaultItem = true; miNotify.Click += new EventHandler(notifyHandler); cmNotify.MenuItems.Add(miNotify); notifyIcon = new NotifyIcon(); notifyIcon.Icon = this.Icon; notifyIcon.Visible = true; notifyIcon.ContextMenu = cmNotify; notifyIcon.Text = AppConstants.APPLICATION_NAME;

DateTime.UtcNow.Ticks有时跳跃了一个显着的数额

将应用程序更新部署到多个站点

如何获得button上的popupbutton,点击uwp中的另一个popupbutton

桌面程序在Win 7中运行,但不在Win 8中运行

如何在MS Windows上加载GTK Sharp主题

通过.Net设置Windows进程“评论”?

实施Explorer ContextMenu并将多个文件传递给一个程序实例

当我在文本框中input时出现恼人的嘟嘟声

防止用户通过系统热键退出Windows应用程序

以编程方式连接和断开USB设备

两个答案都很接近,但含有微妙的毒素。 您不应该将请求的大小硬编码为16×16。

而是查询System@R_653_404[email protected]以确定适当的维度。 尽管认值是16×16,但这可以通过各种方式进行更改,例如DPI缩放。

有关此属性的更多信息,请参阅MSDN文章

用法一个例子是

notifyIcon.Icon = new System.Drawing.Icon(this.Icon,System@R_653_404[email protected]),

改变这个:

notifyIcon.Icon = this.Icon;

对此:

notifyIcon.Icon = new System.Drawing.Icon(this.Icon,16,16);

您需要创建图标的新实例。 创建(加载)新实例时,请指定大小。 Icon类的构造函数有几个不同的重载,供您选择。 如果图标文件被嵌入到主要的可执行文件中(通常是这种情况),你可以这样做:

Assembly asm = this.GetType().Assembly; var smallIconSize = new System.Drawing.Size(16,16); notifyIcon.Icon = new System.Drawing.Icon( asm.GetManifestResourceStream("MyPrettyAppIcon.ico"),smallIconSize);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐