デバイスプロパティの設定
ここでは、ビデオキャプチャデバイスのプロパティアイテムをコード上で編集する方法を示しています。
Software | IC Imaging Control 3.4, Visual Studio™ 2019 |
---|---|
サンプル(C#) | modifying_Device_properties_cs_3.4.zip |
サンプル(VB.NET) | modifying_Device_properties_vb_3.4.zip |
ICImagingControlでビデオキャプチャデバイスのプロパティ設定を行うにはVCDSimplePropertyクラスを使用します。
private VCDSimpleProperty vcdProp = null;
Private VCDProp As TIS.Imaging.VCDHelpers.VCDSimpleProperty
Form1_loadにVCDSimplePropertyクラスのインスタンスを作成します。
vcdProp = new VCDSimpleProperty( icImagingControl1.VCDPropertyItems );
VCDProp = TIS.Imaging.VCDHelpers.VCDSimpleModule.GetSimplePropertyContainer(ICImagingControl1.VCDPropertyItems)
最初に"Brightness"パラメータがオートモードをサポートしているかどうかをチェックします。もしサポートされていない場合、チェックボックスAutoはchkBrightnessAuto.Enabled = Falseとして無効にします。もしサポートされている場合、プログラムはVCDProp.Automation(VCDID_Brightness = Falseにより、明示的にオフとします。
if( !vcdProp.AutoAvailable( VCDIDs.VCDID_Brightness ) )
{
chkBrightnessAuto.Enabled = false;
}
else
{
vcdProp.Automation[VCDIDs.VCDID_Brightness] = false;
}
If Not VCDProp.AutoAvailable(VCDIDs.VCDID_Brightness) Then
BrightnessAutoCheckBox.Enabled = False
Else
VCDProp.Automation(VCDIDs.VCDID_Brightness) = False
End If
次にプログラムは"Brightness"パラメータが手動調整をサポートしているかどうかをチェックします。
もしサポートされていない場合はsldBrightness.Enabled = FalseによりBrightnessスライダーは無効とします。
サポートされている場合、デバイスがサポートしているその最小値、最大値(VCDProp.RangeMinとVCDProp.RangeMax)と現在の値(VCDProp.RangeValue)を取得します。これらの値はスライダーのsldBrightnessとlblBrightnessValueに割り当てます。
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();
}
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
スライダーsldBrightnessを調節することにより"Brightness"値をVCDProp.RangeValue(VCDID_Brightness)とダイアログlblBrightnessValue に更新します。
private void sldBrightness_Scroll(object sender, System.EventArgs e)
{
vcdProp.RangeValue[VCDIDs.VCDID_Brightness] = sldBrightness.Value;
lblBrightnessValue.Text = sldBrightness.Value.ToString();
}
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)にして、スライダーを無効(sldBrightness.Enabled = False)にします。
private void chkBrightnessAuto_CheckedChanged(object sender, System.EventArgs e)
{
vcdProp.Automation[VCDIDs.VCDID_Brightness] = chkBrightnessAuto.Checked;
sldBrightness.Enabled = !chkBrightnessAuto.Checked;
}
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
デバイスの他の設定項目についても同様に設定する事ができます。設定の詳細についてはUser's Guideを参照してください。