Quite a while ago I made an application for making a block library that was in a database. What I did for images was make export WMF (with and without backgrounds). This routine actually resizes the application window to get a the smallest bounding box for the WMF image. WMF works well with VBA userforms. Lots of code in here you don't need, this was part of a detail database cataloging application. Here is a snip of code:
'~~~start code, after you have wblocked the objects
'you wish to make an image of
Set wBlkDwg = Application.Documents.Open(catDtlPath & catDetailID & ".dwg")
For Each ent In ssetUserSel
ent.Move Origin, ZeroPnt
'moving all objects relative of origin -disregard
Next
wBlkDwg.Application.ZoomExtents
'chngFld wBlkDwg, "DTL_ID", catDetailID
'chngFld wBlkDwg, "Entered_By", Environ("USERNAME")
acdPref.OpenSave.SavePreviewThumbnail = True
wBlkDwg.PurgeAll
Sleep (250)
wBlkDwg.Save
Sleep (250)
'create new selection set in wblkdwg
Set ssetUserSel = wBlkDwg.SelectionSets.Add("SSdtlCat")
rectMax(0) = rectMax(0) - 1
If ssBBox = False Then GoTo errCaseC
ssetUserSel.Select acSelectionSetWindow, rectMax, rectMin
Sleep (250)
'wmf export with picture cropping, with and without backgrounds
wBlkDwg.width = Round(wBlkDwg.width / (rectMax(0) - rectMin(0))) * (rectMax(1) - rectMin(1))
wBlkDwg.Application.ZoomWindow rectMin, rectMax
wBlkDwg.Application.Update
wBlkDwg.Regen acActiveViewport
wBlkDwg.SetVariable "WMFBKGND", 0
wBlkDwg.Export catWmfPath & catDetailID & "-OFF", "WMF", ssetUserSel
Sleep (250)
wBlkDwg.SetVariable "WMFBKGND", 1
wBlkDwg.Export catWmfPath & catDetailID & "-ON", "WMF", ssetUserSel
'~~~end code
Here is dirty way to make SLD images: (qm = """")
wBlkDwg.SendCommand ("(command " & qM & "mslide" & qM & _
" " & qM & Replace(catSldPath, "\", "\\") & _
Replace(catDetailID, "\", "\\") & ".sld" & qM & ")" & vbCr)
Hope it helps, no time to explain further. I'm sure there are lots of ways to do this.