VintaSoft Twain .NET SDK 15.4: 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