VCDプロパティの基本機能

VCDPropertiesの基本的な機能を紹介します。インターフェースを取 得し、値やプロパティの自動設定などのエレメントを調節するための方法が示されています。


はじめに

このサンプルでは "Brightness" プロパティを使ってプロパティがどのように構成されており、アクセスされるのかを紹介します。まず最初に、"Brightness" 用のVCDPropertyItemクラスライブラリリファレンス>クラス>VCDPropertyItemをコレクションから呼び出します。 そしてスイッチインターフェースとレンジインターフェースがこのVCDPropertyItemクラスライブラリリファレンス>クラス>VCDPropertyItemの 各エレメントより呼び出されます。スイッチインターフェースはこのプロパティの自動設定のオン、オフの切り換えに、レンジインターフェースは このプロパティの値の設定に使用されます。
今回のサンプルプログラムのC#用のソースコードがMy Documents/IC Imaging Control 3.5内の以下のディレクトリに格納されています。

samples\C# *\VCD Simple


プロジェクトの新規作成

新しいプロジェクトを作成し、IC imaging Controlをフォームに追加してください。プログラムを実行する前に、はじめに: Visual Studio .NETプログラマーズガイド>Visual Studioでスタートにあるように映像デバイスの選択、入力方式、ビデオフォーマットを選択してください。もしくはデバイスを選択せずにプログラムを実行してください。最初にIC Imaging Controlによってデバイス選択のダイアログが出現します。選択をせずにダイアログを閉じた場合、プログラムはエラーメッセージを表示し、終了します。
まずチェックボックスとスライダ(トラックバー)をフォームに追加します。チェックボックスを chkBrightnessAuto、 スライダをsldBrightnessと名付けます。


VCDPropertyItemの呼び出し

有効な画像取り込みデバイスが選択された後、"Brightness"用のVCDPropertyItemクラスライブラリリファレンス>クラス>VCDPropertyItem が呼び出されます。

[C#]
TIS.Imaging.VCDPropertyItem brightness = 
icImagingControl1.VCDPropertyItems.FindItem(TIS.Imaging.VCDGUIDs.VCDID_Brightness);

変数型 VCDPropertyItemクラスライブラリリファレンス>クラス>VCDPropertyItemを 宣言し、VCDPropertyItems.FindItemクラスライブラリリファレンス>クラス>VCDPropertyItem>VCDPropertyItems.FindItem Methodメソッドを使って適切なプロパティに割り当てます。呼び出されるプロパティ項目は上記の通りIDで指定されなければなりません。 今回の場合は"Brightness"  用のVCDID_Brightnessと いうことになります。


インターフェースの呼び出しとコントロールの初期化

プロパティは一つかそれ以上のエレメントから構成されています。エレメントには値や自動設定、ワンプッ シュ動作、その他のパラメータがあります。プロパティの調整をするのにはインターフェースが使われ、それらはプロパティ項目のエレメントより取得ことが可能です。値と自動設定のインターフェースとなる2つのグローバル変数を宣言します。

[C#]
private TIS.Imaging.VCDRangeProperty _brightnessRange;
private TIS.Imaging.VCDSwitchProperty _brightnessSwitch;

次のコードはスイッチインターフェースとレンジインターフェースの呼び出し方、また関連するユーザーコントロールを初期化するためにそれらインターフェースの現在の状態を 取得をする方法について示しています。

[C#]
// 値と自動設定のためのスイッチ、 レンジインターフェースへのインターフェースを所得
_brightnessRange = brightness.Find<TIS.Imaging.VCDRangeProperty>( TIS.Imaging.VCDGUIDs.VCDElement_Value );
_brightnessSwithch = brightness.Find<TIS.Imaging.VCDSwitchProperty>( TIS.Imaging.VCDGUIDs.VCDElement_Auto );

if ( _brightnessSwitch == null)
{
     MessageBox.Show(" このデバイスではAuto brightnessがサポートされていません。");
}

プロパティ項目のVCDPropertyItem.Findクラスライブラリリファレンス>クラス>VCDPropertyItem>VCDPropertyItem.Find Method メソッドは特定のインターフェースを呼び出すのに使われます。上記でインターフェースを取得しましたので、ユーザー コントロールを初期化できます。下記のコードによってそれを実行します。

[C#]
// BrightnessRange オブジェクトの現在の範囲と値でスライダーを初期化する
sldBrightness.Enabled = true;
sldBrightness.Minimum = _brightnessRange.RangeMin;
sldBrightness.Maximum = _brightnessRange.RangeMax;
sldBrightness.Value = _brightnessRange.Value;

// BrightnessSwitchオブジェクトでチェックボックスを初期化 する
if ( _brightnessSwitch != null )
{
     chkBrightnessAuto.Enabled = true;
     sldBrightness.Enabled = !_brightnessSwitch.Switch;
     chkBrightnessAuto.Checked = _brightnessSwitch.Switch;
}
icImagingControl1.LiveStart();

インターフェースを使うことで、プロパティ項目へのアクセスが簡単に行えます。

プロパティのエレメントを設定する

最後に、プロパティを調整するためにどのようにインターフェースを使うかを説明します。チェックボックス 用のClickイベントとスライダー用のScrollイ ベントを追加してください。チェックボックスは "Brightness" プロパティの自動設定の切り換えを行います。コードは次の通りです。

[C#]
private void chkBrightnessAuto_CheckedChanged( object sender, EventArgs e )
{
     _brightnessSwitch.Switch = chkBrightnessAuto.Checked;
     sldBrightness.Enabled = !chkBrightnessAuto.Checked;
}

上記のコードは現在のチェックボックスの状態を"Brightness" プロパティの自動設定エレメントに割り当て、自動設定がオンの場合スライダーは無効となります。
スライダーのScrollイベント用のコードはより簡単です。

[C#]
private void sldBrightness_Scroll( object sender, EventArgs e )
{
    _brightnessRange.Value = sldBrightness.Value;
}

これでプログラムを実行し、スライダーやチェックボックスを使って "Brightness" プロパティの調整が可能となりました。