Available in the LEADTOOLS Imaging toolkit. |
Writing and Reading Multipage Files (Visual Basic)
Take the following steps to create a multipage file, then load and display the images from the file. Only TIFF (MPT) and PCX (DCX) formats support multipage files.
1. Start Visual Basic.
2. On the Tools pull-down menu, use the Custom Controls option to add the LEAD Main Control module to your project.
3. Select the LEAD Main ActiveX control; then add two controls to your main form. The size and position does not matter.
4. Add the following code to the main form's Load procedure. In online help, you can use the Edit pull-down menu to copy the block of code. This code loads two bitmaps, saves them both into a single multipage TIFF file, loads them again from the TIFF file, and displays them side-by-side.
Private Sub Form_Load()
'Disable automatic repainting of the image.
Lead1.AutoRepaint = False
Lead2.AutoRepaint = False
'Turn off scroll bars to make sure we use the full client area.
Lead1.AutoScroll = False
Lead2.AutoScroll = False
'Position and size the main form so that it takes up most of the screen.
Width = Screen.Width * 0.9
Height = Screen.Height* 0.8
Left = (Screen.Width - Width) / 2
TOP = (Screen.Height - Height) / 2
'Display the form and set the mouse pointer to an hourglass.
Show
Screen.MousePointer = 11
'Load the bitmaps. These hard-coded path names may be different on your system.
Lead1.Load "c:\lead\images\image1.cmp", 0, 0, 1
Lead2.Load "c:\lead\images\image2.cmp", 0, 0, 1
'Save the bitmaps to a single multipage TIFF file
Lead1.Save "c:\lead\images\combined.mpt", FILE_TIF, 24, 0, SAVE_OVERWRITE
Lead2.Save "c:\lead\images\combined.mpt", FILE_TIF, 24, 0, SAVE_APPEND
'Get information about the images so that we can size the controls.
Lead1.GetFileInfo "c:\lead\images\combined.mpt", 1, 0
Lead2.GetFileInfo "c:\lead\images\combined.mpt", 2, 0
'Clear the bitmaps from memory
Lead1.Bitmap = 0
Lead2.Bitmap = 0
'Make the controls visible so that we can size and position them.
'They will not really appear until we load an image and paint it.
Lead1.Visible = True
Lead2.Visible = True
'Set the variables used for preserving the aspect ratio.
HeightFactor1 = Lead1.InfoHeight
WidthFactor1 = Lead1.InfoWidth
HeightFactor2 = Lead2.InfoHeight
WidthFactor2 = Lead2.InfoWidth
HeightAllowed = ScaleHeight * 0.8
WidthAllowed = ScaleWidth * 0.45
'Center each LEAD control on half of the form, preserving the aspect ratio.
'Check to see if using the maximum width will make the image too tall.
'Set the dimensions based on the result.
If (WidthAllowed * HeightFactor1) / WidthFactor1 < HeightAllowed Then
Lead1.Left = (ScaleWidth / 4) - (WidthAllowed / 2)
Lead1.Width = WidthAllowed
Lead1.Height = (Lead1.Width * HeightFactor1) / WidthFactor1
Lead1.Top = (ScaleHeight - Lead1.Height) / 2
Else
Lead1.Top = (ScaleHeight - HeightAllowed) / 2
Lead1.Height = HeightAllowed
Lead1.Width = (Lead1.Height * WidthFactor1) / HeightFactor1
Lead1.Left = (ScaleWidth / 4) - (Lead1.Width / 2)
End If
If (WidthAllowed * HeightFactor2) / WidthFactor2 < HeightAllowed Then
Lead2.Left = (ScaleWidth * 3/4) - (WidthAllowed / 2)
Lead2.Width = WidthAllowed
Lead2.Height = (Lead2.Width * HeightFactor2) / WidthFactor2
Lead2.Top = (ScaleHeight - Lead2.Height) / 2
Else
Lead2.Top = (ScaleHeight - HeightAllowed) / 2
Lead2.Height = HeightAllowed
Lead2.Width = (Lead2.Height * WidthFactor2) / HeightFactor2
Lead2.Left = (ScaleWidth * 3 / 4) - (Lead2.Width / 2)
End If
'Load the bitmaps from the multipage TIFF file
Lead1.Load "c:\lead\images\combined.mpt", 24, 1, 1
Lead2.Load "c:\lead\images\combined.mpt", 24, 2, 1
'Set the image display sizes to match the LEAD controls
ImageWidth1 = Lead1.ScaleWidth
ImageHeight1 = Lead1.ScaleHeight
Lead1.SetDstRect 0, 0, ImageWidth1, ImageHeight1
Lead1.SetDstClipRect 0, 0, ImageWidth1, ImageHeight1
'Set the image display sizes to match the LEAD controls
ImageWidth2= Lead2.ScaleWidth
ImageHeight2= Lead2.ScaleHeight
Lead2.SetDstRect 0, 0, ImageWidth2, ImageHeight2
Lead2.SetDstClipRect 0, 0, ImageWidth2, ImageHeight2
'Display the images
Lead1.ForceRepaint
Lead2.ForceRepaint
'Set the mouse pointer back to the default
Screen.MousePointer = 0
End Sub
5. Run your program to test it.