As I explained in the email the white area is caused by copying a shape with transparency, which bitmap does not support.
So to maintain the illusion the shape are place in front of a shape with a background to match that of the area it will be displayed in.
The background is also the same size as the display area so if you use large shapes there will be gaps, which will be white.
If you reduce the size of the oval and use this revised code it will look more like my example.
Public Sub PaintMyPart()
'
' Group all shapes and copy to picture
'
Dim shpFrame As Shape
Dim shpPart As Shape
Dim intIndex As Integer
On Error Resume Next
'copy your shape to temporary worksheet
Set shpPart = Worksheets("Data").Shapes("Part" & shpNo)
shpPart.Copy
m_shtHolder.Paste
Set shpPart = m_shtHolder.Shapes(m_shtHolder.Shapes.Count)
Set shpFrame = m_CreateFrame
' center your part
shpPart.Left = shpFrame.Left + ((shpFrame.Width - shpPart.Width) / 2)
shpPart.Top = shpFrame.Top + ((shpFrame.Height - shpPart.Height) / 2)
' get shapes
ReDim vntItems(m_shtHolder.Shapes.Count - 1) As Variant
For Each shpFrame In m_shtHolder.Shapes
vntItems(intIndex) = shpFrame.Name
intIndex = intIndex + 1
Next
' group
m_shtHolder.Shapes.Range(vntItems).Group
' get shape and copy
Set shpFrame = m_shtHolder.Shapes(1)
shpFrame.CopyPicture xlScreen, xlBitmap
'Paste the picture from the clipboard into our image control
If m_blnUseUF Then
Set m_frmUFCanvas.Picture = PastePicture(xlBitmap)
Else
Set m_objCanvas.Picture = PastePicture(xlBitmap)
End If
End Sub
Bookmarks