設備的開啟與操作: 修改設備屬性

這節將介紹如何調整視頻捕捉設備的屬性。
語言:.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.