Hi,
I have a problem when adding WMF images to a Slide which already contains the WMF. I get empty boxes with a red X that read “This image cannot currently be displayed”.
The slide contains multiple instances of the WMF image (which is used as a nice frame around an underlying photo).
When I try to replace an instance of the WMF image, it only works if the images are different:
If I’m trying to replace one frame with the same frame (I do this to adjust the size), it doesn’t work.
If I’m replacing one frame with a different frame, it works OK.
What am I doing wrong?
The code:
Protected Function AddFrame(ByVal SlideNum As Integer, ByVal ShapeName As String, ByVal FrameID As Integer) As Boolean
'ShapeName = “ItemPass1” - the ShapeName of the frame of this photo is “ItemPass1Frame”
'ShapeName = “ItemPass1” - the ShapeName of the frame of this photo is “ItemPass1Frame”
Try
Dim slide As Slide = _pres.GetSlideByPosition(SlideNum)
Dim RelShape As Aspose.Slides.Shape = FindShape(slide, ShapeName)
Dim frame As New Frame
If Not RelShape Is Nothing Then
RelShape.LineFormat.ShowLines = False
Dim NewPic As String = “”
If FrameID <> 0 Then
'get the filename from DB
frame.FrameID = FrameID
If frame.GetFrameData Then
If RelShape.Height >= RelShape.Width Then
NewPic = frame.FrameFrameT
Else
NewPic = frame.FrameFrameW
End If<span style="color:blue;">If</span> <span style="color:blue;">Not</span> FindShape(slide, ShapeName & <span style="color:#a31515;">"Frame"</span>) <span style="color:blue;">Is</span> <span style="color:blue;">Nothing</span> <font class="Apple-style-span" color="#0000ff">Then
'remove previous frame
Dim RelShapeFrame As Aspose.Slides.Shape = FindShape(slide, ShapeName & “Frame”)
slide.Shapes.Remove(RelShapeFrame)
End If<span style="color:blue;">Dim</span> pic <span style="color:blue;">As</span> <span style="color:#2b91af;">Picture</span> = <span style="color:blue;">New</span> <span style="color:#2b91af;">Picture</span>(_pres, <span style="color:#2b91af;">HttpContext</span>.Current.Server.MapPath(<span style="color:#a31515;">"~\"</span> & _GlobalPath.FramePath().ToString & <span style="color:#a31515;">"\"</span> & NewPic)) <span style="color:blue;">Dim</span> PictureData <span style="color:blue;">As</span> <span style="color:blue;">New</span> <span style="color:#2b91af;">PictureData</span> PictureData.PicID = _pres.Pictures.Add(pic) <span style="color:blue;">Dim</span> Cord() <span style="color:blue;">As</span> <span style="color:blue;">String</span> = Split(NewPic, <span style="color:#a31515;">"_"</span>) <span style="color:blue;">Dim</span> TempCord() <span style="color:blue;">As</span> <span style="color:blue;">String</span> = Split(Cord(4), <span style="color:#a31515;">"."</span>) Cord(4) = TempCord(0) <span style="color:blue;">Dim</span> R(3) <span style="color:blue;">As</span> <span style="color:blue;">Double</span> R(0) = <span style="color:#2b91af;">Convert</span>.ToInt32(Cord(1)) * 0.001 R(1) = <span style="color:#2b91af;">Convert</span>.ToInt32(Cord(2)) * 0.001 R(2) = <span style="color:#2b91af;">Convert</span>.ToInt32(Cord(3)) * 0.001 R(3) = <span style="color:#2b91af;">Convert</span>.ToInt32(Cord(4)) * 0.001 <span style="color:blue;">Dim</span> x <span style="color:blue;">As</span> <span style="color:blue;">Integer</span> = RelShape.X - <span style="color:#2b91af;">Math</span>.Abs(RelShape.Width * R(0)) <span style="color:blue;">Dim</span> y <span style="color:blue;">As</span> <span style="color:blue;">Integer</span> = RelShape.Y - <span style="color:#2b91af;">Math</span>.Abs(RelShape.Height * R(1)) <span style="color:blue;">Dim</span> width <span style="color:blue;">As</span> <span style="color:blue;">Integer</span> = RelShape.Width + (RelShape.Width * (R(0) + R(2))) <span style="color:blue;">Dim</span> height <span style="color:blue;">As</span> <span style="color:blue;">Integer</span> = RelShape.Height + (RelShape.Height * (R(1) + R(3))) <span style="color:blue;">Dim</span> shape <span style="color:blue;">As</span> Aspose.Slides.<span style="color:#2b91af;">Shape</span> = slide.Shapes.AddPictureFrame(PictureData.PicID, x, y, width, height) shape.Name = ShapeName & <span style="color:#a31515;">"Frame"</span> shape.AlternativeText = FrameID <span style="color:blue;">Return</span> <span style="color:blue;">True</span> <span style="color:blue;">Else</span> WriteLog(<span style="color:#a31515;">"AddFrame - Ex FrameID"</span> & FrameID & vbCrLf & _ <span style="color:#a31515;">"AddFrame - Ex ShapeName "</span> & ShapeName & vbCrLf & _ <span style="color:#a31515;">"AddFrame - Ex SlideNum "</span> & SlideNum & vbCrLf, <span style="color:#a31515;">"Error"</span>) <span style="color:blue;">Return</span> <span style="color:blue;">False</span> <span style="color:blue;">End</span> <span style="color:blue;">If</span> <span style="color:blue;">Else</span> <span style="color:blue;">Dim</span> RelShapeFrame <span style="color:blue;">As</span> Aspose.Slides.<span style="color:#2b91af;">Shape</span> = FindShape(slide, ShapeName & <span style="color:#a31515;">"Frame"</span>) slide.Shapes.Remove(RelShapeFrame) <span style="color:blue;">Return</span> <span style="color:blue;">False</span> <span style="color:blue;">End</span> <span style="color:blue;">If</span> <span style="color:blue;">End</span> <span style="color:blue;">If</span> <span style="color:blue;">Catch</span> ex <span style="color:blue;">As</span> <span style="color:#2b91af;">Exception</span> WriteLog(<span style="color:#a31515;">"AddFrame - Ex FrameID"</span> & FrameID & vbCrLf & _ <span style="color:#a31515;">"AddFrame - Ex ShapeName "</span> & ShapeName & vbCrLf & _ <span style="color:#a31515;">"AddFrame - Ex SlideNum "</span> & SlideNum & vbCrLf & _ ex.ToString, <span style="color:#a31515;">"Error"</span>) <span style="color:blue;">Return</span> <span style="color:blue;">False</span> <span style="color:blue;">End</span> <span style="color:blue;">Try</span> <span style="color:blue;">End</span> <span style="color:blue;">Function</span></pre></div><div>Example of WMF filenames I use:</div><div><span class="Apple-style-span" style="font-family: Verdana, Helvetica; font-size: 13px; background-color: rgb(255, 255, 255); ">M006t_147_68_147_68.WMF</span></div><div><span class="Apple-style-span" style="font-family: Verdana, Helvetica; font-size: 13px; background-color: rgb(255, 255, 255); ">M006w_65_150_63_141.WMF</span></div><div><span class="Apple-style-span" style="font-family: Verdana, Helvetica; font-size: 13px; background-color: rgb(255, 255, 255); "><br></span></div><div><span class="Apple-style-span" style="font-family: Verdana, Helvetica; font-size: 13px; background-color: rgb(255, 255, 255); ">P.S.</span></div><div><span class="Apple-style-span" style="font-family: Verdana, Helvetica; font-size: 13px; background-color: rgb(255, 255, 255); ">If I save the Thumbnail of the slide, the WMF frames appear OK, even if saving the slide as PPT might give red X's.</span></div><div><font class="Apple-style-span" face="Verdana, Helvetica" size="2">Also, I tried updating Aspose.Slides to version 5.9, but the problem persists.</font></div><div><span class="Apple-style-span" style="font-family: Verdana, Helvetica; font-size: 13px; background-color: rgb(255, 255, 255); "><br></span></div><div><span class="Apple-style-span" style="font-family: Verdana, Helvetica; font-size: 13px; background-color: rgb(255, 255, 255); ">Thanks,</span></div><div><span class="Apple-style-span" style="font-family: Verdana, Helvetica; font-size: 13px; background-color: rgb(255, 255, 255); ">Yanai.</span></div>