+1 to what Chaosium's recommendation.
For reference, images can be created via triggers fairly easily, e.g.:
-
Actions
-

Image - Create an image using ReplaceableTextures\Splats\AuraRune9b.blp of size 256.00 at TempLoc with Z offset 0.00 using image type Indicator
-

Image - Change (Last created image): Enable render always state
But if you try to display an icon, e.g.
ReplaceableTextures\CommandButtons\BTNCirclet.blp
, then it'll appear stretched.
This is because images expect an
alpha channel and will stretch the edge pixels of the texture to fit the canvas. So typically, the workaround is to add a 1-pixel transparent border around the image (e.g. via a tool like Photopea:
Photopea | Online Photo Editor).
Then when you import that texture and render it, it'll appear correctly:
(Note that for large images, you may also want to adjust the origin so it renders correctly once it is within view:
Showing the pictures)
This works fine, but it can be tedious to apply that border to every icon you want to use. And each modified icon you import will add roughly 3-4 kb to your map.
To avoid that, mapmakers have used a special trick with a model like the one Chaosium provided. If you set the ReplaceableId of the texture to 31, then you can use the "War Club" ability to dynamically change the texture of that icon in-game. This way, you can use any icon in-game without having to import additional files
For reference: