VintaSoft Twain .NET SDK v10.2
How to get value of device capability?

Example: Here is an example that shows how to get information about all pixel types supported by the device using properties and methods of capability.

''' <summary>
''' Get information about pixel types supported by device.
''' </summary>
Public Sub GetPixelTypesInfo(ByVal device As Vintasoft.Twain.Device)
    ' open the device
    device.Open()

    ' get reference to the object that manipulates IPixelType capability
    Dim pixelTypeCap As DeviceCapability = device.Capabilities.Find(DeviceCapabilityId.IPixelType)
    ' if the IPixelType capability is supported
    If pixelTypeCap IsNot Nothing Then
        ' get information about current, default and supported values of capability

        Dim capValue As TwainValueContainerBase = pixelTypeCap.GetValue()

        Select Case capValue.ContainerType
            Case TwainValueContainerType.[Enum]
                Dim capValueAsEnum As TwainEnumValueContainer = DirectCast(capValue, TwainEnumValueContainer)
                Dim enumValues As Array = capValueAsEnum.EnumValues

                ' output the capability values in human readable format
                Console.WriteLine(String.Format("Current pixel type: {0}", enumValues.GetValue(capValueAsEnum.ValueIndex)))
                Console.WriteLine(String.Format("Default pixel type: {0}", enumValues.GetValue(capValueAsEnum.DefaultValueIndex)))
                Console.Write("Supported pixel types:")
                For i As Integer = 0 To enumValues.Length - 1
                    Console.Write(String.Format(" {0}", enumValues.GetValue(i)))
                Next
                Exit Select
        End Select

        Console.WriteLine()
    End If

    ' close the device
    device.Close()
End Sub
              
/// <summary>
/// Get information about pixel types supported by device.
/// </summary>
public void GetPixelTypesInfo(Vintasoft.Twain.Device device)
{
    // open the device
    device.Open();

    // get reference to the object that manipulates IPixelType capability
    DeviceCapability pixelTypeCap = device.Capabilities.Find(DeviceCapabilityId.IPixelType);
    // if the IPixelType capability is supported
    if (pixelTypeCap != null)
    {
        // get information about current, default and supported values of capability

        TwainValueContainerBase capValue = pixelTypeCap.GetValue();

        switch (capValue.ContainerType)
        {
            case TwainValueContainerType.Enum:
                TwainEnumValueContainer capValueAsEnum = (TwainEnumValueContainer)capValue;
                Array enumValues = capValueAsEnum.EnumValues;

                // output the capability values in human readable format
                Console.WriteLine(string.Format("Current pixel type: {0}", enumValues.GetValue(capValueAsEnum.ValueIndex)));
                Console.WriteLine(string.Format("Default pixel type: {0}", enumValues.GetValue(capValueAsEnum.DefaultValueIndex)));
                Console.Write("Supported pixel types:");
                for (int i = 0; i < enumValues.Length; i++)
                    Console.Write(string.Format(" {0}", enumValues.GetValue(i)));
                break;
        }

        Console.WriteLine();
    }

    // close the device
    device.Close();
}