我有一个图标,有几个不同的尺寸(16px,32px,64px)。我正在调用ToBitmap()
,但它总是返回32px图像。如何检索64px的?
答案 0 :(得分:27)
这有帮助吗?
Icon sizedIcon = new Icon(Resources.ResourceIcon, new Size(64,64));
答案 1 :(得分:22)
对于遇到同样问题的其他人,我找到了一个很好的小解决方案。
Image img = new Icon(Properties.Resources.myIcon, width, height).ToBitmap()
答案 2 :(得分:13)
这是ResourceManager类中相当痛苦的限制。它的GetObject()方法没有提供传递额外参数的方法,这些参数允许按大小选择返回的图标。解决方法是将图标添加到项目中。使用Project + Add Existing Item,选择.ico文件。选择添加的图标,将Build Action属性更改为“Embedded Resource”。
您现在可以使用以下代码检索所需的图标:
public static Icon GetIconFromEmbeddedResource(string name, Size size) {
var asm = System.Reflection.Assembly.GetExecutingAssembly();
var rnames = asm.GetManifestResourceNames();
var tofind = "." + name + ".ICO";
foreach (string rname in rnames) {
if (rname.EndsWith(tofind, StringComparison.CurrentCultureIgnoreCase)) {
using (var stream = asm.GetManifestResourceStream(rname)) {
return new Icon(stream, size);
}
}
}
throw new ArgumentException("Icon not found");
}
样本用法:
var icon1 = GetIconFromEmbeddedResource("ARW04LT", new Size(16, 16));
var icon2 = GetIconFromEmbeddedResource("ARW04LT", new Size(32, 32));
请注意一种可能的故障模式:此代码假定图标已添加到包含该方法的同一程序集中。
答案 3 :(得分:3)
以下设置工具栏中所有按钮的图标大小 它依赖于存储在按钮标记中的资源名称。
public void SetButtons(object toolstrip, int IconWidth, int IconHeight)
{
var ts = (ToolStrip) toolstrip;
var size = new System.Drawing.Size();
size.Height = IconSize;
size.Width = IconSize;
foreach (ToolStripButton tsBtn in ts.Items)
{
tsBtn.ImageScaling = ToolStripItemImageScaling.None;
var resourcename = (String) tsBtn.Tag;
if (resourcename != null)
{
var myIcon = (Icon) Properties.Resources.ResourceManager.GetObject(resourcename);
var newIcon = new Icon(myIcon, IconWidth, IconHeight);
tsBtn.Image = newIcon.ToBitmap();
}
}
}
答案 4 :(得分:1)
internal static class IconHelper {
public static Icon GetSize(this Icon icon, int width, int height) {
return icon.GetSize(new Size(width, height));
}
public static Icon GetSize(this Icon icon, Size size) {
using(var mem = new MemoryStream()) {
icon.Save(mem);
mem.Position = 0;
return new Icon(mem, size);
}
}
}
答案 5 :(得分:0)
.Net框架中没有内置方法可以做到这一点。
相反,您可以使用this library。
答案 6 :(得分:0)
首次创建Icon
实例时会确定大小,因此您需要使用{{1} Size
中的一个来指定创建时使用的大小。参数。