Article | 70000053 |
Type | Wish |
Product | Engine |
Version | 7001 |
Date Added | 9/1/2014 12:00:00 AM |
Fixed | (10/23/2014 12:00:00 AM) |
Submitted by | JongKyun Kim |
Summary
Is it possible to support multi page tif images ?
Solution
In version 7002 there are two new properties added to the vdImageDef object. These are the FrameCount property and the ActiveFrame property.
ActiveFrame integer: Get/Set the number of page the vdImageDef will be used when draw.
FrameCount integer: Get (readonly) the number of pages the image has.
With the ActiveFrame property the developer/user can choose the page of the image that is going to be rendered in VDF and as this is available only to vdImageDef object you need multiple vdImageDef objects in your document in order to uinsert these as images in the document to display different pages.Note that only some special TIF images have multiple pages and that editing inside VDF is disabled. Also note that this feature is available only for VDCL/VDML files as other CAD formats are not supporting this feature.
See the code and remarks below:
Managed C#: private void btnAddMultiPageTif_Click(object sender, EventArgs e) { // This code will add all pages of a multipage tif image to the document string filename = "MultiPage.tif"; // this is a multiple page tif file vdDocument doc = vdFramedControl1.BaseControl.ActiveDocument; doc.New(); vdImageDef imgdef = new vdImageDef(doc, "MultiPage"); imgdef.FileName = filename; imgdef.Update(); vdImage img = null; if (imgdef.FrameCount > 1) // it is a multipage tif file { for (int i = 0; i < imgdef.FrameCount; i++) { vdImageDef multipagedef = imgdef.Clone(doc) as vdImageDef; // create a new vdImageDef for each page multipagedef.Name = imgdef.Name + "__" + i.ToString(); // with a unique name multipagedef.ActiveFrame = i;// set the page number for each image def. doc.Images.AddItem(multipagedef);//add it to the image definitions collection img = new vdImage(doc, multipagedef, new gPoint(i * 1.1, 0, 0), 1.0d, 0.0d); doc.Model.Entities.AddItem(img);// add an image for each page } imgdef.Deleted = true; } else // this is not a multipage tif file { doc.Images.AddItem(imgdef); img = new vdImage(doc, imgdef, new gPoint(0, 0, 0), 1.0d, 0.0d); doc.Model.Entities.AddItem(img); } doc.CommandAction.Zoom("E", 0, 0); VDF Wrapper (Visual Basec 6): Private Sub Command2_Click() Dim img As Vdrawi5.vdImage Dim imgdef As Vdrawi5.vdImageDef Dim img7 As VectorDraw_Professional.vdImage Dim imgdef7 As VectorDraw_Professional.vdImageDef Dim multimgdef7 As VectorDraw_Professional.vdImageDef Dim I As Integer Dim filename As String VDraw1.ActiveDocument.New filename = "C:\MultiImageTIFF\MultiPage.tif" Set imgdef = VDraw1.ActiveDocument.images.Add(filename) If (imgdef Is Nothing) Then Exit Sub Set imgdef7 = imgdef.WrapperObject If imgdef7.FrameCount > 1 Then imgdef7.Name = "MultiPage" For I = 0 To imgdef7.FrameCount - 1 Set imgdef = VDraw1.ActiveDocument.images.Add(filename) Set multimgdef7 = imgdef.WrapperObject multimgdef7.Name = "MultiPage__" + CStr(I) multimgdef7.ActiveFrame = I Set img = VDraw1.ActiveDocument.CreateInstance(Vdrawi5.OBJ_IMAGE) Set img7 = img.WrapperObject Set img7.ImageDefinition = multimgdef7 img.InsertionPoint = Array(1.1 * I, 0, 0) VDraw1.ActiveDocument.entities.AddItem img Next I VDraw1.ActiveDocument.images.Purge Else imgdef7.Name = "NoMultipage" Set imgdef7 = imgdef.WrapperObject Set img = VDraw1.ActiveDocument.CreateInstance(Vdrawi5.OBJ_IMAGE) Set img7 = img.WrapperObject Set img7.ImageDefinition = imgdef7 img.InsertionPoint = Array(0, 0, 0) VDraw1.ActiveDocument.entities.AddItem img End If VDraw1.CommandAction.Zoom "E", 0, 0 End Sub