VintaSoft Twain .NET SDK 15.0: Documentation for .NET developer
In This Topic
    How to scan the top part of page?
    In This Topic
    DeviceImageLayout class allows to control the image layout of TWAIN device.



    Here is an example that demonstrates how to acquire only the top part of page from TWAIN device:
    private void AcquirePartOfImage()
    {
        using (Vintasoft.Twain.DeviceManager deviceManager = new Vintasoft.Twain.DeviceManager())
        {
            try
            {
                // open the device manager
                deviceManager.Open();
    
                deviceManager.ShowDefaultDeviceSelectionDialog();
    
                // get reference to the default device
                Vintasoft.Twain.Device device = deviceManager.DefaultDevice;
    
                device.ShowUI = false;
                device.DisableAfterAcquire = true;
    
                // open the device
                device.Open();
    
                // set image layout (get only the top half of the page)
                device.UnitOfMeasure = Vintasoft.Twain.UnitOfMeasure.Inches;
                Vintasoft.Primitives.VintasoftRectF imageLayout = device.ImageLayout.Get();
                device.ImageLayout.Set(0, 0, imageLayout.Width, imageLayout.Height / 2);
    
                string tiffFilename = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), "multipage.tif");
    
                // acquire images from device
                Vintasoft.Twain.AcquireModalState acquireModalState = Vintasoft.Twain.AcquireModalState.None;
                do
                {
                    acquireModalState = device.AcquireModal();
                    switch (acquireModalState)
                    {
                        case Vintasoft.Twain.AcquireModalState.ImageAcquired:
                            // save acquired image to multipage TIFF file
                            device.AcquiredImage.Save(tiffFilename);
                            // dispose the acquired image
                            device.AcquiredImage.Dispose();
                            break;
                    }
                }
                while (acquireModalState != Vintasoft.Twain.AcquireModalState.None);
    
                // close the device
                device.Close();
    
                // close the device manager
                deviceManager.Close();
            }
            catch (Vintasoft.Twain.TwainException ex)
            {
                System.Console.WriteLine("Error: " + ex.Message);
                System.Console.ReadLine();
            }
        }
    }
    
    Private Sub AcquirePartOfImage()
            Using deviceManager As New Vintasoft.Twain.DeviceManager()
                    Try
                            ' open the device manager
                            deviceManager.Open()
    
                            deviceManager.ShowDefaultDeviceSelectionDialog()
    
                            ' get reference to the default device
                            Dim device As Vintasoft.Twain.Device = deviceManager.DefaultDevice
    
                            device.ShowUI = False
                            device.DisableAfterAcquire = True
    
                            ' open the device
                            device.Open()
    
                            ' set image layout (get only the top half of the page)
                            device.UnitOfMeasure = Vintasoft.Twain.UnitOfMeasure.Inches
                            Dim imageLayout As Vintasoft.Primitives.VintasoftRectF = device.ImageLayout.[Get]()
                            device.ImageLayout.[Set](0, 0, imageLayout.Width, imageLayout.Height / 2)
    
                            Dim tiffFilename As String = System.IO.Path.Combine(System.IO.Directory.GetCurrentDirectory(), "multipage.tif")
    
                            ' acquire images from device
                            Dim acquireModalState As Vintasoft.Twain.AcquireModalState = Vintasoft.Twain.AcquireModalState.None
                            Do
                                    acquireModalState = device.AcquireModal()
                                    Select Case acquireModalState
                                            Case Vintasoft.Twain.AcquireModalState.ImageAcquired
                                                    ' save acquired image to multipage TIFF file
                                                    device.AcquiredImage.Save(tiffFilename)
                                                    ' dispose the acquired image
                                                    device.AcquiredImage.Dispose()
                                                    Exit Select
                                    End Select
                            Loop While acquireModalState <> Vintasoft.Twain.AcquireModalState.None
    
                            ' close the device
                            device.Close()
    
                            ' close the device manager
                            deviceManager.Close()
                    Catch ex As Vintasoft.Twain.TwainException
                            System.Console.WriteLine("Error: " + ex.Message)
                            System.Console.ReadLine()
                    End Try
            End Using
    End Sub