• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 721
  • Last Modified:

New Bitmap (Filename as String) - Why is this not a string?

I'm writing my first shared com add-in for excel in VB.Net and my experience is primarily with VBA so I'm learning.   The add-in adds a ribbon, the ribbon has a bunch of custom png images used for button images.  

Why does Return New Bitmap(My.Resources.AcctgUline16) return a bitmap


Dim sImage as String = "My.Resources." & control.id & "16"
Return  New Bitmap(sImage)

does not?

From VS 2008 the Intellisense says Bitmap(filename as string)
Working Code:
   Public Function GetImage(ByVal control As Office.IRibbonControl) As Bitmap
        'control.id = AcctgUline
        Return New Bitmap(My.Resources.AcctgUline16)
    End Function
Does not work:
    Public Function GetImage(ByVal control As Office.IRibbonControl) As Bitmap
        'control.id = AcctgUline
        Dim sImage As String = "My.Resources." & control.Id & "16"
        'sImage = My.Resources.AcctgUline16
        Return New Bitmap(sImage)
    End Function

Open in new window

1 Solution
Bitmap has an overloaded constructor, one of which accepts a parameter of a bitmap and another a string to a file on the filesystem

when you use My.Resources.AcctgUline16, you are actually supplying a bitmap

using the string  "My.Resources." & control.id & "16"
the code is attempting to find a file named "My.Resources.AcctgUline16" on the file system
For 50p? Must be easy....

Microsoft Intellisense also says "Image original", which is your first line. The second example, with sImage does not because you do not give the path to the image. Instead, you give a string representing a line in your code, which doesn't mean anything to the constructor. Give it a path, like Bitmap("c:/temp/myimage.jpg") for instance.
slindbergAuthor Commented:
After your post and finding the post below I modified my code and it works.  Thanks


    Public Function GetImage(ByVal control As Office.IRibbonControl) As Bitmap
        Dim resMan As New ResourceManager("mpmRibbons.Resources", Me.GetType.Assembly)
        Dim sImage As String = control.Id & "16"
        Return New Bitmap(CType(resMan.GetObject(sImage), System.Drawing.Image))
    End Function

Open in new window

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

Join & Write a Comment

Featured Post

Get your problem seen by more experts

Be seen. Boost your question’s priority for more expert views and faster solutions

Tackle projects and never again get stuck behind a technical roadblock.
Join Now