winforms 如何使用[工具箱位图(“MyResourcePictureFileName”)]上的资源文件/路径

e0uiprwp  于 2023-03-03  发布在  其他
关注(0)|答案(3)|浏览(147)

正在开发自定义控件并希望放置自定义图标。为此,尝试使用[ToolboxBitmap(“MyResourcePictureFileName”)]属性中的解决方案资源文件,但未设置图标,而是显示默认用户控件图标。而固定路径工作正常
例如,[工具箱位图(@“C:\frame.bmp”)]
但我不想用绝对位置。

**问题:**如何使用控件的自定义图像/图标

下面是我代码:

*注意:*frame.bmp已在我的资源中,并且操作属性=嵌入资源用于生成

// DONT WANT TO USE THIS --> [ToolboxBitmap( @"C:\frame.bmp")]  
[ToolboxBitmap("Resources.frame.bmp")]
[ToolboxItem(true)] 
public partial class MyCustomPanelControl : Panel
{
................
................
}

请指教,
谢谢

qybjjes1

qybjjes11#

[ToolboxBitmap("Resources.frame.bmp")]

资源名称不正确,顺便说一句,这是工具箱位图的一个长期问题。首先确保您正确嵌入了位图,不要****使用资源设计器:

  • 项目〉添加现有项目〉选择位图文件
  • 在“解决方案资源管理器”窗口中选择添加的项。在“属性”窗口中将“生成操作”设置为“嵌入资源”
  • 项目〉属性〉应用程序选项卡〉默认名称空间属性很重要,这是您使用的名称,而不是“资源”
  • 仔细检查并运行ildasm.exe。双击清单,您应看到类似以下内容的条目:
.mresource public DefaultNamespace.frame.bmp
{
  // Offset: 0x000000B8 Length: 0x000004F6
}

注意.mresource名称,这是您放入属性中的名称。修复:

[ToolboxBitmap("DefaultNamespace.frame.bmp")]

将“DefaultNamespace”替换为实际名称。

5anewei6

5anewei62#

如果您将图像保存为资源,并尝试使用Properties.Resources.YourImage获取其路径,则无法正常工作,因为Resources返回的是图像对象,而不是您所期望的路径。
如果您希望这样做,请编辑注解以接收图像对象或将图像保存到临时文件,然后使用其路径,如中所示:

string IMG_PATH = Path.GetTempPath();
IMG_PATH += "imagemsample.png"; //adds the name of the file you want
Properties.Resources.YourImage.Save(IMG_PATH);

然后您可以:

[ToolboxBitmap(IMG_PATH)]
w8f9ii69

w8f9ii693#

我发现了一些有用的东西:如果您将图像添加到路径c#并不为该路径创建命名空间,则可以将空类添加到该路径并使用typeof(thatClass),例如:

[ToolboxBitmap(typeof(ImageLoader),@"imagename.png")]

注1:ImageLoader为空类
注意2:确保您的图像是嵌入资源

相关问题