I'm new to the AddIn customization model in ArcGIS 10 and I'm trying to figure out how to change a button image for a button. I'm looking for the equivalent to the BaseCommand UpdateBitmap method and haven't had any luck. Is this a limitation of the AddIn model? Or did I miss something obvious?
3 Answers
Ok, I've worked something out using ICommandItem.FaceID. I wasn't initially thinking of using ICommandItem, but it gets the job done.
ICommandItem commandItem = ArcMap.Application.Document.CommandBars.Find(...;
commandItem.FaceID = ESRI.ArcGIS.ADF.COMSupport.OLE.GetIPictureDispFromBitmap(bitmap);
I have not worked with add-ins in ArcGIS 10, but looking at the documentation (see heading Add-in file anatomy), it appears that you would need to specify the image declaratively in the add-in's XML configuration (metadata):
<ESRI.Configuration
xmlns="http://schemas.esri.com/Desktop/AddIns"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<!-- Omitted -->
<AddIn language="CLR" library="Acme.dll" namespace="Acme">
<ArcMap>
<Commands>
<Button
id="Acme_ToggleDockWinBtn"
class="ToggleDockWinBtn"
caption="OpenDockWin"
category="Acme Tools"
image="Images\ToggleDockWinBtn.png" <!-- Define image URI -->
tip="Toggle dockable window."
message="Open dockable window.">
<Help heading="Toggle">Turns the ACME dockable window on and off.</Help>
</Button>
</Commands>
</ArcMap>
</AddIn>
</ESRI.Configuration>
See also the Advanced add-in concepts topic, which suggests that graphics should no longer be embedded as resources in the assembly.
The image used in the xml configuration file must have its property "build action" set to AddInContent - at least is vs2012 for arcgis 10.2.
-
3
-
While true, this doesn't answer the question. Maybe it could be a comment on Adam's question since his answer also pertains to the xml declarative. Commented Apr 9, 2014 at 12:59