我在设计器中跟踪了ToolstripMenu的跟踪到以下行:
(System.Drawing.Bitmap) new System.ComponentModel.ComponentResourceManager(typeof(FormMain)).GetObject("saveToolStripButton.Image")
只要toolstripMenuItem在表单上,我就可以复制它并将其用作表单代码。是否可以直接访问这些图标,而不必添加工具条及其标准项?
答案 0 :(得分:3)
假设您正在使用visual studio,这些图标可供您在以下位置使用:C:\ Program Files \ Microsoft Visual Studio 9.0 \ Common7 \ VS2008ImageLibrary
如果VS 2005将9.0更改为8
答案 1 :(得分:2)
Dim ListViewType As System.Type = GetType(System.Windows.Forms.ListView)
Dim ImageFetcher As New System.Drawing.ToolboxBitmapAttribute(ListViewType)
Dim large As Boolean = False
Dim ListViewTBitmap As New System.Drawing.Bitmap(ImageFetcher.GetImage(chkBoxType, large))
答案 2 :(得分:0)
Visual Studio通常使用资源文件来管理图标,显示文本和许多其他资源。这些文件(由.resx扩展名标识)是XML,因此您甚至可以在VS IDE中查看它们。
对于ToolStrip自动生成的按钮,使用base64 enconding将图标内联保存在表单的资源文件中。要查找资源文件,请在解决方案资源管理器中展开与表单对应的节点,.resx应与.Designer.cs文件一起存在。这里的乐趣开始了:您可以使用这些资源做很多事情:
选项1:双击解决方案资源管理器中的.resx文件,使用IDE的内置资源编辑器将其打开。在该窗口的左上角,您将看到一个下拉按钮,您可以从中选择“图像”。在那里,你有最充满荣耀的图标。通过右键单击它们,您可以执行许多操作,包括将它们导出到文件中。
选项2:如果右键单击.resx文件并选择Open with
| XML (Text) Editor
,您将看到该文件的原始XML代码。您可以将资源文件添加到项目中并以相同的方式在代码编辑器中打开它,然后您可以查找定义图标的块(当您遇到一块乱码文本时,查看它周围的标签以了解什么是它)并将它们从一个.resx文件复制粘贴到另一个.resx文件。给他们更简单的名字,然后你应该能够引用你自己的.resx来为你的菜单,控件等选择图像。
选项3:您可以复制base64编码的数据并使用某些base64实用程序对其进行解码,但结果与将选项1中所述的图像导出到文件的结果完全相同。
不尝试破解设计器生成的.resx文件本身。从理论上讲,如果你知道自己在做什么,你可以将表单中的其他控件连接到相同的资源......但是如果你正在阅读这篇文章,那么你对VS Designer的内部结构知之甚少,所以省去头痛;)。