设备的开启与操作: 修改设备属性

这节将介绍如何调整视频捕捉设备的属性。
语言:.NET C#/Visual Basic
版本:3.0.3
发布于:2005年4月7日
作者:IC Imaging Control 技术支持部
系统要求:IC Imaging Control >2.1
由WDM数据流类驱动程序驱动的相机、视频转换器或图像采集卡

程序窗口如图所示:

The dialog window of the sample application.

IC Imaging Control 提供了VCDSimpleProperty 类用于调整视频设备:

[C#]
private VCDSimpleProperty vcdProp = null;
[VB.NET]
Private VCDProp As VCDSimpleProperty

程序在Form1_load中创建一个VCDSimpleProperty 类的实例:

[C#]
vcdProp = new VCDSimpleProperty( icImagingControl1.VCDPropertyItems );
[VB.NET]
VCDProp = VCDSimpleModule.GetSimplePropertyContainer(ICImagingControl1.VCDPropertyItems)

程序首先检测设备是否提供亮度自动模式。 如不提供,则复选框Auto (chkBrightnessAuto.Enabled = False) 被设为不可用状态。 如提供,程序将其关闭(VCDProp.Automation(VCDID_Brightness = False):

[C#]
if( !vcdProp.AutoAvailable( VCDIDs.VCDID_Brightness ) )
{
    chkBrightnessAuto.Enabled = false;
}
else
{
    vcdProp.Automation[VCDIDs.VCDID_Brightness] = false;
}
[VB.NET]
If Not VCDProp.AutoAvailable(VCDIDs.VCDID_Brightness) Then
    BrightnessAutoCheckBox.Enabled = False
Else
    VCDProp.Automation(VCDIDs.VCDID_Brightness) = False
End If

而后,程序检测设备是否允许手动调节亮度。 如不允许,程序的slider Brightness (sldBrightness.Enabled = False ) 会被设为不可用状态。 如允许,程序确定设备提供的最小和最大值(VCDProp.RangeMinVCDProp.RangeMax),以及当前值(VCDProp.RangeValue), 而后使用这些值初始化sldBrightness 和 lblBrightnessValue:

[C#]
if( !vcdProp.Available( VCDIDs.VCDID_Brightness ) )
{
    sldBrightness.Enabled = false;
}
else
{
    sldBrightness.Minimum = vcdProp.RangeMin(VCDIDs.VCDID_Brightness);
    sldBrightness.Maximum = vcdProp.RangeMax(VCDIDs.VCDID_Brightness);
    sldBrightness.Value = vcdProp.RangeValue[VCDIDs.VCDID_Brightness];
    sldBrightness.TickFrequency = (sldBrightness.Maximum - sldBrightness.Minimum) / 10;
    lblBrightnessValue.Text = sldBrightness.Value.ToString();
}
[VB.NET]
If Not VCDProp.Available(VCDIDs.VCDID_Brightness) Then
    BrightnessTrackBar.Enabled = False
Else
    BrightnessTrackBar.Enabled = True
    BrightnessTrackBar.Minimum = VCDProp.RangeMin(VCDIDs.VCDID_Brightness)
    BrightnessTrackBar.Maximum = VCDProp.RangeMax(VCDIDs.VCDID_Brightness)
    BrightnessTrackBar.Value = VCDProp.RangeValue(VCDIDs.VCDID_Brightness)
    BrightnessTrackBar.TickFrequency = (BrightnessTrackBar.Maximum - BrightnessTrackBar.Minimum) / 10
    BrightnessValueLabel.Text = BrightnessTrackBar.Value
End If

用户调节 slider sldBrightness时,程序把新的亮度值写入设备(VCDProp.RangeValue(VCDID_Brightness)) 并将其显示在程序窗体中 ( lblBrightnessValue):

[C#]
private void sldBrightness_Scroll(object sender, System.EventArgs e)
{
    vcdProp.RangeValue[VCDIDs.VCDID_Brightness] = sldBrightness.Value;
    lblBrightnessValue.Text = sldBrightness.Value.ToString();
}
[VB.NET]
Private Sub BrightnessTrackBar_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BrightnessTrackBar.Scroll
    VCDProp.RangeValue(VCDIDs.VCDID_Brightness) = BrightnessTrackBar.Value
    BrightnessValueLabel.Text = VCDProp.RangeValue(VCDIDs.VCDID_Brightness)
End Sub

当用户点击复选框 Auto (chkBrightnessAuto ) 开启自动模式后,程序将开启设备的这项属性(VCDProp.Automation(VCDID_Brightness) = True),把slider (sldBrightness.Enabled = False)设为不可用状态:

[C#]
private void chkBrightnessAuto_CheckedChanged(object sender, System.EventArgs e)
{
    vcdProp.Automation[VCDIDs.VCDID_Brightness] = chkBrightnessAuto.Checked;
    sldBrightness.Enabled = !chkBrightnessAuto.Checked;
}
[VB.NET]
Private Sub BrightnessAutoCheckBox_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles BrightnessAutoCheckBox.CheckedChanged
    VCDProp.Automation(VCDIDs.VCDID_Brightness) = BrightnessAutoCheckBox.Checked
    BrightnessTrackBar.Enabled = Not BrightnessAutoCheckBox.Checked
End Sub

设备其它属性的调整与本例类似,详细信息请参阅 IC Imaging Control 使用指南。

相关源代码示例

责任声明
IC Imaging Control 源代码库中的所有代码均只用于教学目的,The Imaging Source Europe GmbH 作为IC Imaging Control的开发制造商,不对任何由于使用本文或其中源代码所产生的后果承担责任。

该网站为The Imaging Source网络的一部分。其它的站点包括 公司, Imaging, 天文相机, Astronomy Cameras Blog, Blog caméras d'astronomie, 天文相机有奖竞答, TX Text Control, LiveDocx, phpLiveDocxForum.