当前位置: 首页 > 编程语言 > C#

选择System.Drawing.Icon的大小?分享

时间:2023-04-10 20:32:16 C#

选择System.Drawing.Icon的大小?我有一个有几种不同尺寸(16像素、32像素、64像素)的图标。我在上面调用了ToBitmap(),但它总是返回一个32px的图像。如何检索64px?这是ResourceManager类中一个相当痛苦的限制。它的GetObject()方法不提供传递额外参数的方法,这些参数允许按大小选择返回的图标。解决方法是将图标添加到项目中。使用Project+AddExistingItem,选择.ico文件。选择添加的图标并将BuildAction属性更改为“EmbeddedResource”。您现在可以使用以下代码检索所需的图标:publicstaticIconGetIconFromEmbeddedResource(stringname,Sizesize){varrnames=asm.GetManifestResourceNames();vartofind="."+名称+“.ICO”;foreach(rnames中的字符串rname){如果(rname.EndsWith(tofind,StringComparison.CurrentCultureIgnoreCase)){使用(varstream=asm.GetManifestResourceStream(rname)){返回新图标(流,大小);}}}thrownewArgumentException("找不到图标");}示例用法:varicon1=GetIconFromEmbeddedResource("ARW04LT",newSize(16,16));varicon2=GetIconFromEmbeddedResource("ARW04LT",newSize(32,32));请注意一种可能的失败模式:此代码假定图标已添加到包含该方法的同一程序集中。这有帮助吗?图标sizedIcon=newIcon(Resources.ResourceIcon,newSize(64,64));对于遇到同样问题的任何人,我找到了一个不错的小解决方案。Imageimg=newIcon(Properties.Resources.myIcon,width,height).ToBitmap()下面设置工具栏所有按钮的图标大小。它依赖于存储在按钮标签中的资源名称。publicvoidSetButtons(objecttoolstrip,intIconWidth,intIconHeight){varts=(ToolStrip)toolstrip;varsize=newSystem.Drawing.Size();size.Height=IconSize;size.Width=IconSize;foreach(ts.Items中的ToolStripButtontsBtn){tsBtn.ImageScaling=ToolStripItemImageScaling.None;varresourcename=(String)tsBtn.Tag;如果(资源名称!=null){varmyIcon=(图标)Properties.Resources.ResourceManager.GetObject(资源名称);varnewIcon=newIcon(myIcon,IconWidth,IconHeight);tsBtn.Image=newIcon.ToBitmap();}}}internalstaticclassIconHelper{publicstaticIconGetSize(thisIconicon,intwidth,intheight){returnicon.GetSize(newSize(width,height));}publicstaticIconGetSize(thisIconicon,Sizesize){using(varmem=newMemoryStream()){icon.Save(mem);内存位置=0;返回新图标(内存,大小);}}}.Net框架中没有内置方法来执行此操作。相反,您可以使用此库。大小是在首次创建Icon实例时确定的,因此您需要使用一个带有Size参数的Icon构造函数来指定在创建Icon实例时要使用的大小。以上就是C#学习教程:选择System.Drawing.Icon的大小?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: