画像設定の調整をする

ブライトネスやコントラスト、彩度などの画像設定を調整する方法を説明します。
今回のサンプルプログラムのVB.NET 、C#用のソースコードはMy Documents/IC Imaging Control 3.4内の以下ののディレクトリに格納されています。
samples\VB *\Adjusting Image Settings

プロジェクトの新規作成

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

Brightness(明るさ)のような画像の設定は VCDRangePropertyクラスライブラリリファレンス>クラス>VCDRangePropertyによって提供されます。こちらの例ではRangeプロパティへのアクセスを容易にするためにVCDSimplePropertyクラスを使用します。このクラスはネームスペースTIS.Imaging.VCDHelpers内で宣言されますのでフォームに追加しておいてください。

[VB.NET]
Imports TIS.Imaging
Imports TIS.Imaging.VCDHelpers
[C#]
Imports TIS.Imaging;
Imports TIS.Imaging.VCDHelpers;

ソースコードの記述

まず最初に、新しい変数をフォームに追加します。

[VB.NET]
private VCDProp as VCDSimpleProperty
[C#]
private VCDSimpleProperty VCDProp;

そして次にVCDProp変数を初期化して画像取り込みデバイスのプロパティへのアクセスを取得します。

[VB.NET]
VCDProp = VCDHelpers.VCDSimpleModule. GetSimplePropertyContainer(IcImagingControl1.VCDPropertyItems) 
[C#]
VCDProp = VCDHelpers.VCDSimpleModule.GetSimplePropertyContainer(icImagingControl1.VCDPropertyItems);

スライダーが初期化され、最小値と最大値に正しい値を持つようになります。
その後、VCDProp.RangeValue(VCDID_Brightness)の戻り値がスライダのサムの位置の初期化に使われます。 LiveStartクラスライブラリリファレンス>クラス>ICImagingControl>ICImagingControl.LiveStart Methodメソッドを呼び出すことでライブ画像表示が始まります。

[VB.NET]
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    IcImagingControl1.ShowDeviceSettingsDialog()
    If Not IcImagingControl1.DeviceValid Then
        System.Windows.Forms.MessageBox.Show("No device was selected.", "Adjusting Image Setting", 
        System.Windows.Forms.MessageBoxButtons.OK, MessageBoxIcon.Information)
        Me.Close()
        Return
     End If

     If IcImagingControl1.DeviceValid = True Then
        IcImagingControl1.LiveStart()  
        VCDProp = VCDSimpleModule.GetSimplePropertyContainer(IcImagingControl1.VCDPropertyItems)
         '  Brightnessスライダーの範囲を設定する
         trackBar1.Minimum = VCDProp.RangeMin(VCDIDs.VCDID_Brightness)
         trackBar1.Maximum = VCDProp.RangeMax(VCDIDs.VCDID_Brightness)
         '  現在のBrightnessの値にスライダをセットする
         trackBar1.Value = VCDProp.RangeValue(VCDIDs.VCDID_Brightness)
    End If
End Sub
[C#]
private void Form1_Load(object sender, EventArgs e)
{
     if (!icImagingControl1.DeviceValid)
    {
         icImagingControl1.ShowDeviceSettingsDialog();
         if (!icImagingControl1.DeviceValid)
        {
             MessageBox.Show("No device was selected.", "Adjusting Image Setting",
                             MessageBoxButtons.OK, MessageBoxIcon.Information);
             this.Close();
             return;
         }
     }
     if (icImagingControl1.DeviceValid == true)
    {
        icImagingControl1.LiveStart();  
        VCDProp = VCDSimpleModule.GetSimplePropertyContainer(icImagingControl1.VCDPropertyItems);  
        //  Brightnessスライダーの範囲を設定する
        trackBar1.Minimum = VCDProp.RangeMin(VCDIDs.VCDID_Brightness);
        trackBar1.Maximum = VCDProp.RangeMax(VCDIDs.VCDID_Brightness);
        //  現在のBrightnessの値にスライダをセットする
        trackBar1.Value = VCDProp.RangeValue[VCDIDs.VCDID_Brightness];
    }
}

最後に、次のコードを加えればスライダを使ったブライトネスの調整が可能になります。

[VB.NET]
Private Sub trackBar1_Scroll(ByVal sender As System.Object, ByVal e As System.EventArgs) 
               Handles trackBar1.Scroll
    VCDProp.RangeValue(VCDIDs.VCDID_Brightness) = trackBar1.Value
End Sub
[C#]
private void trackBar1_Scroll(object sender, EventArgs e)
{
     VCDProp.RangeValue[VCDIDs.VCDID_Brightness] = trackBar1.Value;
}

これでプログラムを実行する準備が整いました。スライダのサムを動かしてブライトネスを調整できます。全ての画像設定は同じ手順で調整することができますので、これでコントラスト、彩度、ズームなどの設定も可能になります。