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.

Add the LEAD RasterView Control to your project.

 

On the Project pull-down menu, use the Components option, and select the LEAD RasterView Control (14.5).

3.

Add the LEAD Raster Object Library and LEAD Raster Variant Object Library to your project.

 

On the Project pull-down menu, use the References option, and select the LEAD Raster Object Library (14.5).

 

On the Project pull-down menu, use the References option, and select the LEAD Raster Variant Object Library (14.5).

4.

Add the LEAD RasterIO Object Library to your project.

 

On the Project pull-down menu, use the References option, and select the LEAD RasterIO Object Library (14.5).

5.

Select the LEAD RasterView control; then add two controls to your main form. The size and position does not matter.

6.

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()
  Dim RasterIO1 As New LEADRasterIO
  Dim RasterIO2 As New LEADRasterIO
  Dim HeightFactor1, WidthFactor1, HeightFactor2, WidthFactor2
  Dim HeightAllowed, WidthAllowed
  Dim ImageWidth1, ImageHeight1
  Dim ImageWidth2, ImageHeight2
  
  'Disable automatic repainting of the image.
  LEADRasterView1.AutoRepaint = False
  LEADRasterView2.AutoRepaint = False
  'Turn off scroll bars to make sure we use the full client area.
  LEADRasterView1.AutoScroll = False
  LEADRasterView2.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.
  RasterIO1.Load LEADRasterView1.Raster, "d:\lead14\dist\images\image1.cmp", 0, 0, 1
  RasterIO2.Load LEADRasterView2.Raster, "d:\lead14\dist\images\image2.cmp", 0, 0, 1
  'Save the bitmaps to a single multipage TIFF file
  RasterIO1.Save LEADRasterView1.Raster, "d:\temp\combined.mpt", FILE_TIF, 24, 0, SAVE_OVERWRITE
  RasterIO2.Save LEADRasterView2.Raster, "d:\temp\combined.mpt", FILE_TIF, 24, 0, SAVE_APPEND
  'Get information about the images so that we can size the controls.
  RasterIO1.GetFileInfo LEADRasterView1.Raster, "d:\temp\combined.mpt", 1, 0
  RasterIO2.GetFileInfo LEADRasterView2.Raster, "d:\temp\combined.mpt", 2, 0
  'Clear the bitmaps from memory
  LEADRasterView1.Raster.Bitmap = 0
  LEADRasterView2.Raster.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.
  LEADRasterView1.Visible = True
  LEADRasterView2.Visible = True
  'Set the variables used for preserving the aspect ratio.
  HeightFactor1 = RasterIO1.InfoHeight
  WidthFactor1 = RasterIO1.InfoWidth
  HeightFactor2 = RasterIO2.InfoHeight
  WidthFactor2 = RasterIO2.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
    LEADRasterView1.Left = (ScaleWidth / 4) - (WidthAllowed / 2)
    LEADRasterView1.Width = WidthAllowed
    LEADRasterView1.Height = (LEADRasterView1.Width * HeightFactor1) / WidthFactor1
    LEADRasterView1.Top = (ScaleHeight - LEADRasterView1.Height) / 2
  Else
    LEADRasterView1.Top = (ScaleHeight - HeightAllowed) / 2
    LEADRasterView1.Height = HeightAllowed
    LEADRasterView1.Width = (LEADRasterView1.Height * WidthFactor1) / HeightFactor1
    LEADRasterView1.Left = (ScaleWidth / 4) - (LEADRasterView1.Width / 2)
  End If
  If (WidthAllowed * HeightFactor2) / WidthFactor2 < HeightAllowed Then
    LEADRasterView2.Left = (ScaleWidth * 3 / 4) - (WidthAllowed / 2)
    LEADRasterView2.Width = WidthAllowed
    LEADRasterView2.Height = (LEADRasterView2.Width * HeightFactor2) / WidthFactor2
    LEADRasterView2.Top = (ScaleHeight - LEADRasterView2.Height) / 2
  Else
    LEADRasterView2.Top = (ScaleHeight - HeightAllowed) / 2
    LEADRasterView2.Height = HeightAllowed
    LEADRasterView2.Width = (LEADRasterView2.Height * WidthFactor2) / HeightFactor2
    LEADRasterView2.Left = (ScaleWidth * 3 / 4) - (LEADRasterView2.Width / 2)
  End If
  'Load the bitmaps from the multipage TIFF file
  RasterIO1.Load LEADRasterView1.Raster, "d:\temp\combined.mpt", 24, 1, 1
  RasterIO2.Load LEADRasterView2.Raster, "d:\temp\combined.mpt", 24, 2, 1
  'Set the image display sizes to match the LEAD controls
  ImageWidth1 = LEADRasterView1.ScaleWidth
  ImageHeight1 = LEADRasterView1.ScaleHeight
  LEADRasterView1.SetDstRect 0, 0, ImageWidth1, ImageHeight1
  LEADRasterView1.SetDstClipRect 0, 0, ImageWidth1, ImageHeight1
  'Set the image display sizes to match the LEAD controls
  ImageWidth2 = LEADRasterView2.ScaleWidth
  ImageHeight2 = LEADRasterView2.ScaleHeight
  LEADRasterView2.SetDstRect 0, 0, ImageWidth2, ImageHeight2
  LEADRasterView2.SetDstClipRect 0, 0, ImageWidth2, ImageHeight2
  'Display the images
  LEADRasterView1.ForceRepaint
  LEADRasterView2.ForceRepaint
  'Set the mouse pointer back to the default
  Screen.MousePointer = 0
End Sub

7.

Run your program to test it.